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

Issue

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

Solution

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)

Answered By – alecxe

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published