如何解决此问题元素不可交互的Selenium Python

Ger*_*Cas 3 python selenium selenium-chromedriver selenium-webdriver

我的脚本代码中包含以下行,我从Selenium IDE获得的XPath可以正常运行:

driver.find_element_by_xpath("(//a[contains(@href, '')])[20]").click()
Run Code Online (Sandbox Code Playgroud)

自动化测试在此处停止,并出现以下错误:

Traceback (most recent call last):
File "Script.py", line 65, in <module>
    driver.find_element_by_xpath("//a[contains(@href, '')])[20]").click()
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 80, in click
    self._execute(Command.CLICK_ELEMENT)
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: element not interactable
(Session info: chrome=74.0.3729.131)
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Windows NT 6.1.7601 SP1 x86_64)
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

谢谢你的帮助。

Ree*_*ner 6

看到您只想抓取数据,建议您使用以下解决方案:

element = driver.find_element_by_xpath("(//a[contains(@href, '')])[20]")
driver.execute_script("arguments[0].click();", element)
Run Code Online (Sandbox Code Playgroud)

它通过Javascript单击元素,而不是硒使用的“自然”单击(试图模拟用户体验)。

在这里回答了类似的问题,问题也链接到该文章的另一篇文章。

  • 出色的。非常感谢您的帮助,效果完美!在哪里可以看到使用 Javascript 解决此类问题的 selenium 示例?到目前为止,我以为我只使用 Python 来使用 Selenium,呵呵,但我发现它可以通过添加 Javascript 来执行更强大的选项。那么 `arguments` 是一个数组吗?因为您使用了“arguments[0]”。 (4认同)