[英]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')
试试这个代码
s1 = Select(browser.find_element_by_id('highlightunits'))
s1.select_by_index(1)
这将选择您的 id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.