【问题标题】:Selenium python can't send keys to second input fieldSelenium python无法将键发送到第二个输入字段
【发布时间】:2020-11-30 12:49:14
【问题描述】:

我正在尝试使用 selenium 和 python 填写网络表单。 我正在遍历所有输入字段并发送每个“测试”字符串。

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:

【问题讨论】:

  • 嗨克雷斯滕!请检查我的答案,让我知道这是否对您有用。
  • 完成,也可以直接使用//input[@class='textbox_login'][@type='text']就完成了。

标签: python-3.x selenium selenium-webdriver xpath display


【解决方案1】:

你使用过的Locator Strategy

driver.find_elements_by_xpath("//input[@class='textbox_login']")

准确地标识 HTML 中的 3 个元素。

第一个和最后一个元素分别是用户名密码字段。

但是第二个匹配元素包含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 上找到一些相关讨论:

【讨论】:

    猜你喜欢
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 2022-01-14
    • 1970-01-01
    • 2011-11-13
    • 2019-10-20
    • 2020-04-25
    相关资源
    最近更新 更多