1

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

5
  • What are you trying to achieve? Testing, or you want to scrape the data? If scraping, post the full url. Commented Jul 21, 2022 at 22:19
  • @platipus_on_fire_333 I'm trying to create a program that will login to a site, navigate through a few toolbars and upload a CSV file after clicking "Bulk Upload". Commented Jul 21, 2022 at 22:22
  • If your end goal is to upload a file, you can achieve this with requests - you can login, then upload that file. Commented Jul 21, 2022 at 22:24
  • @platipus_on_fire_333 Oh cool! Could you send some resources on how to achieve this? I'm very new to Selenium, requests, etc. Commented Jul 22, 2022 at 18:14
  • stackoverflow.com/questions/11892729/… and stackoverflow.com/questions/22567306/… Commented Jul 22, 2022 at 18:16

2 Answers 2

1

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
    
Sign up to request clarification or add additional context in comments.

Comments

1

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.