Home > Back-end >  Selenium Select not working on dropdown element
Selenium Select not working on dropdown element

Time:07-22

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

CodePudding user response:

The desired element isn't within any 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
    

CodePudding user response:

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
  • Related