Riaz Ladhani
Riaz Ladhani

Reputation: 4072

Selenium Python AttributeError: 'WebElement' object has no attribute 'select_by_visible_text'

I am selecting a value from a drop down field in Selenium Python. I am getting the error:

AttributeError: 'WebElement' object has no attribute 'select_by_visible_text'

My method to select the drop down is:

def select_dataset_from_dataset_dropdown(self):
    dataset_drop_down_element = WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.ID, 'search_variables_lb_datasets')))
    dataset_drop_down_element.select_by_visible_text(str("Query (Query)"))

The HTML is:

    <select id="search_variables_lb_datasets" class="gwt-ListBox marginbelow" style="display: inline;">
<option value="-">-</option>
<option value="CRM">CRM</option>
<option value="ESCR">ESCR</option>
<option value="ORCHARD">ORCHARD</option>
<option value="Edit_test">Edit_test</option>
<option value="Query (Query)">Query (Query)</option>
</select>

I would like to select the value "Query (Query)"

Can i select this value?

The error trace is:

Traceback (most recent call last):
  File "C:\Webdriver\ClearCore Regression Test\ClearCore - Regression Test\TestCases\StructuredSearch_TestCase.py", line 54, in test_00001_create_search_query_dataset_for_search_and_check_search_variables_dm_query_variables_are_displayed
    search_variables_dm_query_page.select_datamap_and_dataset_from_the_dropdown()
  File "C:\Webdriver\ClearCore Regression Test\ClearCore - Regression Test\Pages\Structured_Search\search_dm_query_page.py", line 90, in select_datamap_and_dataset_from_the_dropdown
    self.select_dataset_from_dataset_dropdown()
  File "C:\Webdriver\ClearCore Regression Test\ClearCore - Regression Test\Pages\Structured_Search\search_dm_query_page.py", line 79, in select_dataset_from_dataset_dropdown
    dataset_drop_down_element.select_by_visible_text(str("Query (Query)"))
AttributeError: 'WebElement' object has no attribute 'select_by_visible_text'

Thanks, Riaz

Upvotes: 10

Views: 20726

Answers (2)

Moti Vator
Moti Vator

Reputation: 49

Moin I would like to add 2 things.

first tmp= Select(driver.find_element_by_id("search_variables_lb_datasets")) tmp.select_by_visible_text('')

secondly, it's important to get too the position with .send_keys(), before

take care

Upvotes: 1

alecxe
alecxe

Reputation: 474031

select_by_visible_text() method is available on the Select class, instantiate it:

from selenium.webdriver.support.select import Select

dataset_drop_down_element = WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.ID, 'search_variables_lb_datasets')))
dataset_drop_down_element = Select(dataset_drop_down_element)

Upvotes: 13

Related Questions