为什么尝试点击selenium会导致" ElementNotInteractableException"?

时间:2017-10-05 16:34:01

标签: python selenium xpath

我试图点击网页" https://2018.navalny.com/hq/arkhangelsk/"来自网站的主页。但是,我收到此错误

selenium.common.exceptions.ElementNotInteractableException: Message: 

"消息:"

之后什么也没有

我的代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

browser = webdriver.Firefox()
browser.get('https://2018.navalny.com/')
time.sleep(5)
linkElem = browser.find_element_by_xpath("//a[contains(@href,'arkhangelsk')]")
type(linkElem)
linkElem.click()

我认为xpath对我来说是必要的,因为最终,我的目标是不要点击单个链接,而是点击此网页上的80个链接。我已经设法使用以下方式打印所有相关链接:

driver.find_elements_by_xpath("//a[contains(@href,'hq')]")

然而,对于初学者,我试图让它至少点击一个链接。

感谢您的帮助,

1 个答案:

答案 0 :(得分:1)

解决此类问题的最佳方法是使用首选浏览器的开发人员工具查看页面源代码。例如,当我转到此页面并查看Firebug的HTML选项卡,并查找//a[contains(@href,'arkhangelsk')]时,我看到了这一点:

enter image description here

因此,该链接位于div中,当前不可见(实际上整个子节从div开始,id="hqList"被隐藏)。 Selenium不允许您单击不可见元素,但它允许您检查它们。因此,获取元素,点击它 - 不会。

你用它做什么取决于你的期望。在这种特殊情况下,您似乎需要点击<label class="branches-map__toggle-label" for="branchesToggle">Список</label>才能看到该链接。所以加上这个:

browser.find_element_by_link_text("Список").click();

之后,您可以点击列表中的任何链接。