繁体   English   中英

元素不可点击(Selenium Webdriver - JAVA)

[英]Element not click-able (Selenium Webdriver - JAVA)

所有,

我已经使用 Selenium webdriver 一段时间了,但遇到了一个奇怪的问题。 我需要单击 selenium webdriver 没有执行的元素,因此我接下来的所有步骤都失败了。 元素的html如下。

<div id="group-container" class="grp-view-container">

<div id="group-container-0" class="component-inline-block" '="" data-original-title="" title="">

<div id="group-container-1" class="component-inline-block" '="" data-original-title="" title="">

</div>

我需要点击 group-container-1。 我使用了简单的点击、Actions、JavascriptExecutor、SendKeys(keys.RETURN)。

我使用了 Chromedriver、FirefoxDriver。

请指导我。

谢谢。

经过一些谷歌搜索和本地测试,我得出的结论是,如果和元素确实隐藏在另一个元素后面,则来自 selenium 的正常 element.click() 调用将不起作用。

在您的情况下,您可能有一些 css 将 you 元素隐藏在其他元素后面,从而使 Selenium 无法访问它。

在这种情况下,您应该使用普通的旧 JS。

这是 FireFoxDriver 的示例:

FirefoxDriver driver = new FirefoxDriver();
driver.get("ENTER YOU URL HERE");
// driver.findElement(By.id("group-container-1")).click(); This will work only if the element is not hidden.

String jsExpression = "document.getElementById('group-container-1').click();";
((JavascriptExecutor) driver).executeScript(jsExpression);

要查看任何结果,您必须在单击的元素上具有 onClick 侦听器。

当您拥有使用 z-index 的 CSS 时,经常会出现这种情况。 另一个 HTML 元素的透明部分可能覆盖了您感兴趣的 HTML 元素。

有时使用绝对定位时可能会出现同样的情况。

过去我在编写脚本来测试搜索字段时遇到过同样的问题。 该脚本适用于页眉,但不适用于页脚。 我还可以通过键输入( sendKeys )来测试该字段,而不是鼠标单击。

我收到此错误:

org.openqa.selenium.ElementClickInterceptedException: element click intercepted: Element <input type="submit" class="submit hidden-text" value="Search"> is not clickable at point (988, 633). Other element would receive the click: <i class="fas fa-arrow-circle-up"></i>

我的 ScreenShotOnFailure.java 实用程序显示了这个问题: 返回顶部按钮遮挡搜索图标

使用页面“返回顶部”的按钮部分遮挡了我想要单击的搜索图标。 我最初试图通过指定窗口大小( driver.manage().window().setSize(new Dimension(1024, 768)); )来解决这个问题,因为我认为它由于浏览器尺寸而被遮挡,但事实并非如此没有帮助。 所以我切换到JS点击按钮。

我改变了:

driver.findElement(By.xpath("(//input[@value='Search'])[2]")).click();

到:

org.openqa.selenium.WebElement ele = driver.findElement(By.xpath("(//input[@value='Search'])[2]"));
    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("arguments[0].click();", ele);

(和进口相关进口)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM