我通过执行 find_elements_by_xpath
然后对所有元素使用 try, catch
来解决它,直到没有错误和中断。
尝试将 click
或 send_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)
知道如何解决或为什么会遇到此错误吗?
答案 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)
希望它会奏效。