Selenium Select not working on dropdown element

Question:

So I am trying to run the following code to select an option from a drop-down toolbar:

## Drop-down menu
time.sleep(5) # wait for element to load in page otherwise selenium won't be able to find it
element_dropdown = driver.find_element("id","conference-dropdowns")
element_dropdown.click()

# Select visible text
time.sleep(5)
select = Select(element_dropdown)
select.select_by_visible_text("Bulk Upload")

But then I get the following error:

UnexpectedTagNameException: Message: Select only works on <select> elements, not on <label>

How do I resolve this issue? Why am I getting this error? See structure below. Thanks so much in advance.
enter image description here

Asked By: mexicanRmy

||

Answers:

The Exception says everything: you can use Select class only with <select> object.
Simply try to

  • click() on button to expand drop-down menu
  • wait for required option to be clickable
  • click() on option
Answered By: JaSON

The desired element isn’t within any tag, but they are within <label> tag.

Bulk Upload

So you won’t be able to use Select() class.


Solution

The click element with text as Bulk Upload you need to induce WebDriverWait for the element_to_be_clickable() and you can use the following locator strategy:

  • Using XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='dropdown-submenu']//label[@class='submenu' and contains(., 'Bulk Upload')]"))).click()
    
  • Note: You have to add the following imports :

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Answered By: undetected Selenium
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.