元素不可交互

时间:2021-04-19 16:43:13

标签: python selenium selenium-webdriver

编辑:

我通过执行 find_elements_by_xpath 然后对所有元素使用 try, catch 来解决它,直到没有错误和中断。

致阅读此问题的任何人。我在这里尝试了所有解决方案,但没有奏效。解决方案是正确的,错误或问题是多个元素具有相同的 xpath。 通过选择第一个元素,我选择了一些不可交互的东西。

尝试将 clicksend_keys 指向 input 元素时出错。

st = driver.find_element_by_xpath('//input[contains(@id, "st")]')
# Element found
st.send_keys(str(amt))
# Error element not interactable
st.click()
# error element not interactable

元素:

<input id="st" type="text" value="" maxlength="7" tabindex="0">

我能够交互并将键发送到网页上与此相同的行中的另一个元素。

追溯:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/Volumes/coding/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 80, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/Volumes/coding/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "/Volumes/coding/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/Volumes/coding/venv/lib/python3.8/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=90.0.4430.72)

知道如何解决或为什么会遇到此错误吗?

1 个答案:

答案 0 :(得分:1)

不知道元素不交互的确切原因,但您可以使用 JavaScript 向输入框添加文本。 Selenium 中有一个类允许在浏览器中执行 JavaScript 代码。做这样的事情:

script = "arguments[0].value="+str(amt)
driver.execute_script(script,st)
driver.execute_script("arguments[0].click()",st)

这会将输入框的值设置为给定的字符串。

在 C# 中:

IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
string script = "arguments[0].value="+amt.toString();
js.executeScript(script,st)
//to click
js.executScript("arguments[0].click()",st)

希望它会奏效。