ElementClickInterceptedException: 元素点击被拦截:

Nir*_*ays 6 python selenium selenium-webdriver

我正在尝试使用 selenium + python 在 wordpress 插件上提交一个表单。当我按下发布按钮时,它给出了一个错误。

ElementClickInterceptedException:元素点击被拦截:元素类型=“提交”名称=“发布”id=“发布”类=“按钮按钮-主要按钮-大”值=“发布”>在点(728、15)不可点击。其他元素将收到点击:...

我尝试了以下解决方案:使用了动作驱动程序,但没有用。使用了 webdriverwait() 函数,它不起作用。使用了 Xpath、CSS 选择器、ID - 它在所有三个中都给出了相同的错误。

 `    browser.find_element_by_css_selector("""#save-post""").click()

    WebDriverWait(driver, 90).until(EC.element_to_be_clickable((By.ID, "save-post"))).click()
`
Run Code Online (Sandbox Code Playgroud)

请注意,当我在 python 控制台中运行该特定行时,它正在工作。但是在运行完整脚本时,它显示错误。

门户网站上有很多类似的问题,但没有一个有效。请帮我解决这个问题。

IPo*_*nik 12

好的,答案在错误消息中 - “其他元素会收到点击:... ”我刚开始使用 selenium 时遇到了同样的问题,无法弄清楚是什么问题。“其他元素会收到点击:... ”表示在您的元素上方有其他元素(重叠)(弹出窗口,页面变灰(加载时禁用,某些 JS 正在运行)),因此当 Selenium 尝试点击时您的元素实际上是点击该阻止元素。Selenium 运行得非常快并且在它变得可点击之前点击,这就是为什么你无法点击它 - “当我在 python 控制台中运行该特定行时,它正在工作" 尝试在 time.sleep() 5-10 秒后单击。如果是这种情况,那么您可以在找到您的元素之前使用等待或添加条件来检查阻止单击您的元素的元素不存在,然后您单击你的元素。

  • 在某些情况下,睡眠不会有帮助,因为有一个元素故意覆盖该元素以拦截点击。在这种情况下,您可以尝试先单击重叠的元素。(此元素可能会执行某些操作,然后将单击发送到您最初尝试单击的项目...所以有时这就是必要的) (3认同)
  • @Niravsays在我的例子中,错误消息给了我拦截点击的确切元素“其他元素将收到点击:`<div id =“...></div>`” (2认同)
  • 尝试滚动到该元素,然后尝试单击它 (2认同)

归档时间:

查看次数:

62854 次

最近记录:

5 年,3 月 前