繁体   English   中英

使用 Python + Selenium 从下拉列表中选择值

[英]Selecting value from dropdown using Python + Selenium

请帮助我从下拉列表中选择一个值。 我能够登录网站,但登录后无法从下拉列表中选择一个值。我尝试了一些在线找到的解决方案/建议,但无法让它发挥作用。 请参阅下面的代码和 HTML 错误。

HTML:

<select id="highlightunits" name="highlightunits">
<option selected="" value="px">Pixels</option>
<option value="in">Inches</option>
<option value="mm">Millimeters </option>
<option value="cm">Centimeters</option>
</select> </td>

代码:

 from selenium.webdriver.chrome.webdriver import WebDriver
 from selenium.webdriver.common.by import By
 from selenium.webdriver.support.ui import WebDriverWait
 from selenium.webdriver.support import expected_conditions as EC
 from selenium.webdriver.support.ui import Select
 from selenium.webdriver.common.keys import Keys


 usernameStr = 'username'
 passwordStr = 'password'
 browser = webdriver.Chrome()
 browser.maximize_window()
 browser.get('mywebsite/')
 username = browser.find_element_by_id('username')
 username.send_keys(usernameStr)
 password = WebDriverWait(browser, 
 5).until(EC.presence_of_element_located((By.ID,'password')))
 password.send_keys(passwordStr)
 logInButton = browser.find_element_by_id('login_button')
 logInButton.click()
 file_input1 = browser.find_element_by_id('reference')
 file_input2 = browser.find_element_by_id('candidate')
 file_input1.send_keys("filelocation on my drive")
 file_input2.send_keys("filelocaton on my drive")
 s1= Select(browser.find_element_by_id('highlightunits'))
 print(s1.options)
 for option in s1.options:
   s1.select_by_visible_text('Inches')

错误:

[<selenium.webdriver.remote.webelement.WebElement (session="3903b52d4ab75592fbd965a21424f192", element="0.5058773595053347-4")>, <selenium.webdriver.remote.webelement.WebElement (session="3903b52d4ab75592fbd965a21424f192", element="0.5058773595053347-5")>, <selenium.webdriver.remote.webelement.WebElement (session="3903b52d4ab75592fbd965a21424f192", element="0.5058773595053347-6")>, <selenium.webdriver.remote.webelement.WebElement (session="3903b52d4ab75592fbd965a21424f192", element="0.5058773595053347-7")>]

Traceback (most recent call last):
  File "C:\Users\Desktop\MyProjects\Applications\dropdown.py", line 26, in <module>
    s1.select_by_visible_text('Inches')
  File "C:\Python27\lib\site-packages\selenium\webdriver\support\select.py", line 120, in select_by_visible_text
    self._setSelected(opt)
  File "C:\Python27\lib\site-packages\selenium\webdriver\support\select.py", line 212, in _setSelected
    option.click()
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click
    self._execute(Command.CLICK_ELEMENT)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 628, in _execute
    return self._parent.execute(command, params)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 312, in execute
    self.error_handler.check_response(response)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
ElementNotVisibleException: Message: element not visible: Element is not currently visible and may not be manipulated
  (Session info: chrome=63.0.3239.132)
  (Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 6.1.7601 SP1 x86_64)

您需要使用以下代码:

s1 = Select(browser.find_element_by_id('highlightunits'))
s1.select_by_visible_text('Inches')

PS:不使用循环。

您可以使用以下代码:

s1 = browser.find_element_by_xpath("//input[@id='highlightunits']") 
s1.send_keys('Inches')

归功于: 如何使用 Python 使用 Selenium 选择下拉菜单值?

试试这个代码

s1 = Select(browser.find_element_by_id('highlightunits'))
s1.select_by_index(1)

这将选择您的 id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM