当前位置: 首页 > 知识库问答 >
问题:

元素单击当元素仅部分被遮挡时,硒中的异常

钱繁
2023-03-14

我正在使用硒进行测试。我想点击一个元素。元素非常可点击和可见,但元素的中间点被遮挡,导致错误。

这是一个主视频:

超文本标记语言代码(链接到演示):

<style>
    button {
        width: 90vw;
        height: 90vh;
        position: fixed;
        top: 5vh;
        left: 5vw;
    }

    .cover {
        background: grey;
        opacity: 0.3;
        width: 80vw;
        height: 80vh;
        position: fixed;
        top: 10vh;
        left: 10vw;
    }
</style>

<button onclick="alert('hi');">
  Click me!
</button>

<div class="cover">
  I'm in the way!
</div>

Python selenium代码:

from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("https://blissfulpreciouslanservers--five-nine.repl.co/")
button = driver.find_element_by_tag_name("button")
button.click()

结果:

selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <button onclick="alert('hi');">...</button> is not clickable at point (451, 450). Other element would receive the click: <div class="cover">...</div>

这似乎是硒的一个相当可悲的限制。按钮是可点击的,但不是在所有点。我不想摆弄滚动和坐标。

一般来说,关于异常有许多类似的问题,例如:

  • 无法单击元素:元素单击碎片/硒中的
  • 异常
  • 硒不能点击元素,因为其他元素掩盖了它
  • 元素不可单击,因为另一个元素在python中掩盖了它

然而,这些问题从来都不是专门针对一个只是部分模糊的元素,所以我还没有找到我自己问题的正确答案。其他问题的答案通常分为以下几类:

  1. 等待元素可点击。不适用于此。
  2. 使用动作链,例如ActionChains(驱动程序)。move_to_element(按钮)。单击()。执行()。这没有帮助,因为。move_to_element()移动到元素的中间。
  3. 使用JavaScript执行点击。看起来我可能不得不求助于此,但它非常不令人满意。我仍然想验证该元素至少在某个地方是可点击的,并且不会绕过所有检查。

共有1个答案

孟茂学
2023-03-14

您是否尝试将<code>类

<button class="btn" onclick="alert('hi');">
  Click me!
</button>

然后使用以下内容找到并单击该按钮:

driver.findElement(By.className("btn")).click();

类似于alecxe的堆栈溢出响应

 类似资料:
  • 用我在selenium的初学者知识,我试图找到点击元素,打开链接。这些项目的链接没有href。我如何执行点击正确的元素打开链接。 我正在使用python、selenium、chrome web驱动程序、BeautifulSoup。所有库都已更新。 下面是示例html片段,其中有一个我需要使用selenium点击的标题。请让我知道,如果你需要更多的html源。此代码来自仅限“登录”的网站。

  • 我最近将selenium升级到最新版本(2.53),将firefox升级到最新版(45.0.1)。 我在相同的网站上运行相同的代码,但我突然有很多这样的例外: Web 驱动程序异常: 消息: 元素在点 (312, 8.816665649414062) 不可单击。其他元素将收到单击: 例如: 有什么我应该注意的新东西吗?我之前的python selenium版本相当旧,而且我在Firefox 38上

  • 这是我的问题。 我有一个像这样的简单表格(示例): null null 并且我正在尝试列的名称,同时单击元素。 我想这可能是一个简单的解决办法但我找不到。 提前致谢

  • 我想点击一个按钮,这个按钮要么还不能点击,要么上面有另一个元素。 但只要它是可点击的,我就想按它。我试过这个: 但它不起作用,因为我仍然得到错误

  • 我目前正在处理一个自动填写表格的项目。当表单填写时,下一个按钮会出现,这就是为什么它给我一个错误。 我试过: HTML: 错误: selenium.common.exceptions.ElementClickInterceptedException:消息:元素点击被拦截:元素在点(203,530)不可点击。其他元素将收到点击:...(会话信息:chrome=76.0.3809.132)

  • 我正在使用selenium测试脚本。我得到以下错误和这个错误随机发生。当我跑10次时,我会得到大约两次。所以它不是真的可复制的。有人知道为什么会这样吗?我试图单击的元素在浏览器中绝对可见,并且不会四处移动,因此不需要调整大小或拖动元素。我正在使用chrome webdriver,我阅读了其他故障排除策略(调试“Element is not clickable at point”错误),它们似乎与我