所有
我已经使用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。
请指导我。
感谢。
答案 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 实用程序显示了问题:
使用页面“返回顶部”的按钮部分遮挡了我想要点击的搜索图标。我最初试图通过指定窗口大小 (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);
(并导入相关的导入)