如何解决Selenium Python无法将密钥发送到第二个输入字段
我正在尝试使用Selenium和python填充Web表单。 我正在遍历所有输入字段并向每个输入字段发送“测试”字符串。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome('C:/Users/kbu/chromedriver.exe')
driver.get('https://skovbakken.halbooking.dk/proc_error.asp')
all_inputs = driver.find_elements_by_xpath("//input[@class='textbox_login']")
for input in all_inputs:
input.send_keys("Test")
仅填写第一个。为什么呢?
这是我得到的错误:
Traceback (most recent call last):
File "C:\Users\kbu\Dropbox\Python\squash.py",line 10,in <module>
input.send_keys("Test")
File "C:\Users\kbu\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webelement.py",line 477,in send_keys
self._execute(Command.SEND_KEYS_TO_ELEMENT,File "C:\Users\kbu\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webelement.py",line 633,in _execute
return self._parent.execute(command,params)
File "C:\Users\kbu\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py",line 321,in execute
self.error_handler.check_response(response)
File "C:\Users\kbu\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py",line 242,in check_response
raise exception_class(message,screen,stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: chrome=84.0.4147.125)
这是HTML:
解决方法
您使用的Locator Strategy:
driver.find_elements_by_xpath("//input[@class='textbox_login']")
准确标识HTML中的3个元素。
第一个和最后一个元素分别是 username 和 password 字段。
但是第二个匹配元素包含style
属性值,作为 style="DISPLAY: none;
:
<input onkeydown="CheckEnterNoIE('logon',event.keyCode)" name="mf_nnpg0fjm" type="password" id="mf_nnpg0fjm" onfocus="if(this.value==multiform.loginvar6.value){this.value='';}" maxlength="50" tabindex="1" class="textbox_login" style="DISPLAY: none;width:120px;">
因此,当脚本尝试在其上调用send_keys()
时,您将面对ElementNotInteractableException
。
参考
您可以在ElementNotInteractableException中找到一些相关的讨论:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。