Python – Selenium – Select Dropdown

Question:

I am trying to select a dropdown box.
The code from the page is:

<span class="sui-dropdown" tabindex="0" style="width: 150px;">
<select class="dropdown-soberanos-plazo" style="display: none;">
<option value="CI">CI</option><option value="24hs">24hs</option>
<option value="48hs">48hs</option>
</select>
<span class="sui-input sui-unselectable" unselectable="on">48hs</span>
<span class="sui-caret-container sui-unselectable" unselectable="on">
<span class="sui-caret sui-unselectable" unselectable="on">
</span></span></span>

I tried the next code, but i am not even able to select the dropdown.

from selenium.webdriver.support.select import Select

driver.find_elements(By.XPATH,'//*[@id="soberanos"]/div/div[3]/span')
Out[176]: [<selenium.webdriver.remote.webelement.WebElement (session="f181c2e9094dce7159f3b24212735c16", element="8846fda9-7cbe-4b20-ae8c-6b6071f7a18f")>]

Select(driver.find_elements(By.XPATH,'//*[@id="soberanos"]/div/div[3]'))
Traceback (most recent call last):

  File "C:UsersXXXXXXXAppDataLocalTempipykernel_229962906900798.py", line 1, in <cell line: 1>
    Select(driver.find_elements(By.XPATH,'//*[@id="soberanos"]/div/div[3]'))

  File "C:UsersXXXXXXDesktopSeleniumlibsite-packagesseleniumwebdriversupportselect.py", line 36, in __init__
    if webelement.tag_name.lower() != "select":

AttributeError: 'list' object has no attribute 'tag_name'

and

 from selenium.webdriver.support.ui import Select

with no success 🙁

I tried with diferents XPATH, same result.

Select(driver.find_elements(By.XPATH,'//*[@id="soberanos"]/div/div[3]/span/select'))
Traceback (most recent call last):

  File "C:UsersltaboadaAppDataLocalTempipykernel_229961364519513.py", line 1, in <cell line: 1>
    Select(driver.find_elements(By.XPATH,'//*[@id="soberanos"]/div/div[3]/span/select'))

  File "C:UsersltaboadaDesktopSeleniumlibsite-packagesseleniumwebdriversupportselect.py", line 36, in __init__
    if webelement.tag_name.lower() != "select":

AttributeError: 'list' object has no attribute 'tag_name'

So….
any advice?
thanks!!!
dropdown Image

Asked By: Luisao

||

Answers:

From your added code and HTML I can give you the idea, try the below Solution.

driver.find_elements returns list of WebElements.

It should be driver.find_element. Note the s in find_element.

So, the line of code should be like

Select(driver.find_element(By.XPATH,'//*[@id="soberanos"]/div/div[3]'))

Let us know if this does not work for you.

Answered By: Akzy

Thanks!!!
I finally made it!
I used a diferent XPATH

dropbox_menu_principal=wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="topNav"]/div/div[1]/button/i')))
dropbox_menu_principal.click()

and for the internal buttons i used the Link_Text Opción.

    if(type(menues)==str):
    menu=wait.until(EC.element_to_be_clickable((By.LINK_TEXT,menues)))
    menu.click()
Answered By: Luisao