Anna Buylova
Anna Buylova

Reputation: 11

Selecting options using Selenium and Python

I know there were several examples with selenium option-selecting. Nevertheless, I still cannot select one in one specific website. https://www.gks.ru/dbscripts/munst/munst20/DBInet.cgi I want to choose Excel option in the top-left Select. The HTML is n attachment

enter image description here

I tried approaching the bar this way

for option in el.find_elements(By.TAG_NAME,'option'):
    print(option.text)
    if option.text == 'CSV':
        option.click() # select() in earlier versions of webdriver
        break

I also used find_elements by class and css_selector

Then I used

select = Select(driver.find_element(By.TAG_NAME,'Select'))
select.select_by_visible_text('Excel')

It could not locate the element either

Could anyone please help?

Upvotes: 1

Views: 632

Answers (1)

undetected Selenium
undetected Selenium

Reputation: 193078

To select the with text as CSV from the tag using Selenium you need to induce WebDriverWait for the element_to_be_clickable() and you can use either of the following Locator Strategies:

  • Using CSS_SELECTOR:

    select = Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select.Select[name='Format']"))))
    select.select_by_visible_text("CSV")
    
  • Using XPATH:

    select = Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@class='Select' and @name='Format']"))))
    select.select_by_visible_text("CSV")
    
  • 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
    from selenium.webdriver.support.ui import Select
    

References

You can find a couple of relevant discussions in:

Upvotes: 3

Related Questions