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
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.
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()
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
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.
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()