元素无法点击(Selenium Webdriver - JAVA)

时间:2016-04-20 11:21:04

标签: java selenium selenium-webdriver

所有

我已经使用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。我使用了一个简单的点击,Actiions,JavascriptExecutor,SendKeys(keys.RETURN)。

我使用了Chromedriver,FirefoxDriver。

请指导我。

感谢。

3 个答案:

答案 0 :(得分:1)

经过一些谷歌搜索和本地测试后,我得出的结论是,如果和元素隐藏在另一个元素后面,那么来自selenium的普通element.click()调用就无法工作。

在你的情况下,你可能有一些css隐藏了其他元素背后的元素,从而使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侦听器。

答案 1 :(得分:0)

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

使用绝对定位时,有时会出现相同的情况。

答案 2 :(得分:0)

过去我在编写脚本来测试搜索字段时遇到过同样的问题。该脚本适用于页眉,但不适用于页脚。我还可以通过键输入 (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 实用程序显示了问题: back to top button obscuring search icon

使用页面“返回顶部”的按钮部分遮挡了我想要点击的搜索图标。我最初试图通过指定窗口大小 (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);

(并导入相关的导入)