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.
CodePudding user response:
The desired element isn't within any
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