我只在Chrome浏览器中看到这个。
完整的错误信息如下:
“org.openqa.selenium。WebDriverException:元素在点(411,675)不可点击。其他元素会收到点击:……”
“将接收点击”的元素位于相关元素的一侧,而不是在元素的顶部,也没有重叠,也没有在页面上移动。
我试过加一个偏移量,但也不行。该项目在显示的窗口上,不需要滚动。
我只在Chrome浏览器中看到这个。
完整的错误信息如下:
“org.openqa.selenium。WebDriverException:元素在点(411,675)不可点击。其他元素会收到点击:……”
“将接收点击”的元素位于相关元素的一侧,而不是在元素的顶部,也没有重叠,也没有在页面上移动。
我试过加一个偏移量,但也不行。该项目在显示的窗口上,不需要滚动。
当前回答
我也因为同样的原因被卡了两天,实际上滚动会让它工作,因为可能是数据无法正常加载,这可能会导致同样的错误一次又一次。
我所做的是,我随机向下滚动,一次是(0,-500),然后是(0,400),然后是(0.-600),你可以根据你的使用给出这些滚动值。只要滚动它,你有内容点击。
driver.execute_script("scrollBy(0,-500);")
sleep(5)
driver.execute_script("scrollBy(0,400);")
sleep(5)
driver.execute_script("scrollBy(0,-600);")
sleep(5)
这真的很有效:)
其他回答
当您使用分辨率大于1024x768的浏览器时,尝试最大化浏览器。
driver.manage().window().maximize();
我遇到这个是因为这个元素上有一个加载对话框。我只是通过在使用this元素之前添加一个等待来解决这个问题。
try {
Thread.sleep((int) (3000));
} catch (InterruptedException e) {
//
e.printStackTrace();
}
希望这对你有所帮助!
我也遇到了同样的问题,这是由div和div内链接之间的id冲突引起的。所以驱动程序点击了div而不是我想要的链接。 我改变了div id,它正常工作。
之前:
<div id="logout"><a id="logout" href="logoutLink">logout</a></div>
后:
<div id="differentId"><a id="logout" href="logoutLink">logout</a></div>
您需要在该元素上使用焦点或滚动。您可能还必须使用显式等待。
WebElement firstbutton= driver.findElement(By.xpath("Your Element"));
Actions actions = new Actions(driver);
actions.moveToElement(element);
actions.perform();
OR
元素是不可点击的,因为它上面有一个旋转/覆盖:
By loadingImage = By.id("loading image ID");
WebDriverWait wait = new WebDriverWait(driver, timeOutInSeconds);
wait.until(ExpectedConditions.invisibilityOfElementLocated(loadingImage));
OR
Point p= element.getLocation();
Actions actions = new Actions(driver);
actions.moveToElement(element).movebyoffset(p.x,p.y).click().perform();
OR
如果仍然不能工作,请使用JavascriptExecutor
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", firstbutton);
哇,这里有很多答案,而且很多都很好。
我希望我能从我的经验中补充一些东西。
好吧,伙计们,在我的情况下,有一个cookie覆盖隐藏元素偶尔。 滚动到元素也可以;但在我看来(对我来说,并不是万能的),最简单的解决方案就是全屏(我在3/4的屏幕窗口上运行脚本)!我们开始吧:
driver.manage().window().maximize();
希望有帮助!