元素在点不可点击。其他元素会收到点击:

Posted

技术标签:

【中文标题】元素在点不可点击。其他元素会收到点击:【英文标题】:Element is not clickable at point . Other element would receive the click: 【发布时间】:2016-12-19 18:52:03 【问题描述】:

我正在尝试单击页面顶部的按钮。我正在使用 CSS 选择器,当我在本地 eclipse 中运行它时它工作得非常好。但是当我尝试在本地的 Jenkins 服务器上运行它时机器失败,说元素不可点击。 当我看到 Jenkins 测试失败的屏幕截图时,我看到标题与我想要单击的按钮重叠。 我已经尝试了几乎所有使用 XPath、CSS、移动到元素、移动鼠标​​的方法。 但还是不能解决,求大神帮忙。

我想点击添加按钮

org.openqa.selenium.WebDriverException: Element is not clickable at point (775.25, 10.166671752929688). Other element would receive the click: <div class="globalHeader-UtilTop"></div>
Command duration or timeout: 69 milliseconds
Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46'
System info: host', ip: '', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_80'

<div class="Componet-intels**strong text**-Container">
<div class="Componet-intels-Container-Header">
<div class="Componet-intels-Container-Content">
<div class="Componet-intels-Container-Content-Row">
<span class="Componet-intels-Item"> Item # </span>
<span class="Componet-intels-Text-Item">
<span class="Componet-intels-Lable-Quantity"> Qty: </span>
<span class="Componet-intels-Text-Quantity">
<span class="Componet-intels-Button">
**<input class="Componet-intelsButtonIcon" type="button" value="Add">**
</span>
</div>

【问题讨论】:

没有一些 html 预览/硒代码很难提供帮助 @Dekel 更新了帖子。感谢您的建议。 对于&lt;input&gt; 元素,我使用.submit() 而不是.click() 方法解决了类似的问题。 【参考方案1】:

元素在点 (775.25, 10.166671752929688) 处不可点击。其他元素会收到点击:

它清楚地表明,在这种情况下,我们要点击的元素被其他一些元素 div 隐藏,它会接收点击。

我认为这是 UI 的问题,标题不应该隐藏元素,但你可以尝试一些事情:

    从webdriver最大化浏览器的窗口,看看header是否还隐藏了元素

    driver.manage().window().maximize() 
    

    使用javascript点击元素

    WebElement element = driver.findElement(By.<locator>);
    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("arguments[0].click()", element)`
    

【讨论】:

你是如何定义“驱动”变量的? @nix86 此答案中提供的代码是伪代码。 “驱动程序”变量是 WebDriver 接口实现的一个实例(参见seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/…)。【参考方案2】:

使用 JavascriptExecutor.:-

WebElement element = driver.findElement(By.<locator>);

JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click()", element)

【讨论】:

【参考方案3】:

在我的情况下,我必须单击一个按钮,该按钮只有在加载了几个图形和一个 ajax 图像后才可见。以下步骤帮助我解决了这个问题:

    识别在ajax调用完成后消失的xpath/css,并明确等待它成为invisible-wait.until(ExpectedConditions.invisibilityOf(element));

    更明确的等待按钮为clickable-wait.until(ExpectedConditions.elementToBeClickable(element));

    使用javascript点击按钮-

    WebElement element = driver.findElement(By.xpath("")); JavascriptExecutor js = (JavascriptExecutor)driver; js.executeScript("arguments[0].click()", element);

如果这仍然不起作用,请尝试在第 1 步和第 2 步之间插入隐式等待。

【讨论】:

不理解反对票,当 click() 和 driver.actions().click() 不起作用时,executeScript 对我有用【参考方案4】:

我在使用 Robot Framework 和 Chrome 浏览器进行 Salesforce 自动化时遇到此错误, 当我使用按键事件(Press Keys $locator RETURN)而不是“点击元素”或“点击按钮”关键字时,它得到了解决。

【讨论】:

以上是关于元素在点不可点击。其他元素会收到点击:的主要内容,如果未能解决你的问题,请参考以下文章

元素 MyElement 在点 (x, y) 处不可点击...其他元素将收到点击

带角覆盖的量角器/硒,其他元素会收到点击

提交元素不可点击的硒python

Selenium:元素不可点击...其他元素会收到点击

Selenium python - 元素在点不可点击

Selenium 元素在点问题时不可点击 - Python