首页 > 解决方案 > 如何解决问题 - Elementclickintercepted 异常

问题描述

我正在使用 Selenium 3.9.0 + GeckoDriver 0.24 + FireFox 58.0.2。

当 webdriver 想要在我的目标站点上单击导航树中的元素时 -> 脚本因 selenium 异常而崩溃:“selenium.common.exceptions.ElementClickInterceptedException:消息:元素在点 (151,823) 处不可点击,因为另一个元素掩盖了它”

有什么问题,我该如何解决?

在硒被点击到元素之前,我尝试增加 DOM 元素的等待时间。但这对我没有帮助。当我使用旧版 selenium (2.53) 和旧版 firefox (45.2.0) 时,该脚本运行良好。该站点中的 HTML 代码没有人更改。

此外,如果我只启动一个测试用例 - > 脚本不会崩溃并成功完成。如果我开始很多测试用例-> 脚本开始因异常而崩溃。

我使用单独的方法单击元素:

def click(driver, locator, sleep_time=5, expl_wait=40): """ 等到元素显示并可点击,然后发送 'click' 给它。如果出现问题,将生成 TimeoutException(不是 NoSuchElementException)。

:type driver: WebDriver
:type locator: tuple
:param sleep_time: delay before click
:param expl_wait: explicit waiting time for presence of element will found
:type sleep_time: float
:type expl_wait: float
"""

time.sleep(sleep_time)
WebDriverWait(driver, expl_wait, ignored_exceptions=StaleElementReferenceException).until(
    ec.presence_of_element_located(locator))
# additional check were deleted, cause of some unexpected timeout exceptions on it
WebDriverWait(driver, 40).until(ec.element_to_be_clickable(locator))
driver.find_element(*locator).click()
wait_for_loading(driver)

Web 驱动程序应该单击元素,执行一些操作并返回成功或失败的结果。但实际结果是 -> 脚本崩溃,因为 selenium 无法点击元素

标签: pythonseleniumqa

解决方案


selenium exception: "selenium.common.exceptions.ElementClickInterceptedException: Message: Element is not clickable at point (151,823) because another element obscures it

要克服这个问题,请尝试使用 javaScript Executor 单击元素。

driver.execute_script("arguments[0].click();",driver.find_element(*locator))

推荐阅读