我只在Chrome浏览器中看到这个。
完整的错误信息如下:
“org.openqa.selenium。WebDriverException:元素在点(411,675)不可点击。其他元素会收到点击:……”
“将接收点击”的元素位于相关元素的一侧,而不是在元素的顶部,也没有重叠,也没有在页面上移动。
我试过加一个偏移量,但也不行。该项目在显示的窗口上,不需要滚动。
我只在Chrome浏览器中看到这个。
完整的错误信息如下:
“org.openqa.selenium。WebDriverException:元素在点(411,675)不可点击。其他元素会收到点击:……”
“将接收点击”的元素位于相关元素的一侧,而不是在元素的顶部,也没有重叠,也没有在页面上移动。
我试过加一个偏移量,但也不行。该项目在显示的窗口上,不需要滚动。
当前回答
在测试了所有提到的建议后,没有一个奏效。我写了这个代码。它有效,但并不漂亮
public void click(WebElement element) {
//https://code.google.com/p/selenium/issues/detail?id=2766 (fix)
while(true){
try{
element.click();
break;
}catch (Throwable e){
try {
Thread.sleep(200);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}
}
public void click(String css) {
//https://code.google.com/p/selenium/issues/detail?id=2766 (fix)
while(true){
try{
driver.findElement(By.cssSelector(css)).click();
break;
}catch (Throwable e){
try {
Thread.sleep(200);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}
}
其他回答
我也遇到了同样的问题,花了好几个小时才找到解决办法。我试着用量角器点击一个长ngGrid底部的单元格。这是我的ngrrid html的快照:
....many rows here..
<!- row in renderedRows ->
<!- column in renderedColumns ->
<div ...> <a ngclick="selectRow(row)"...>the test link 100000</a>...
....
所有的点击功能都不能工作。解决方案是在元素的当前范围内使用evaluate:
element(by.cssContainingText("a", "the test link 100000"))
.evaluate("selectRow(row)")
显然,这是Chrome驱动二进制文件中“不会修复”错误的结果。
一个对我有效的解决方案(我们的里程可能有所不同)可以在这个谷歌小组讨论中找到,评论#3:
https://groups.google.com/forum/?fromgroups= !主题/ selenium-developer-activity / DsZ5wFN52tc
相关的部分在这里:
从那以后,我通过直接导航到的href来解决这个问题 跨度的父锚。 driver.Navigate () .GoToUrl (driver.FindElement (By.Id (embeddedSpanIdToClick)) .FindElement (By.XPath(“。”)).GetAttribute(“href”));
在我的例子中,我使用的是Python,所以一旦我得到了所需的元素,我就简单地使用
driver.get(ViewElm.get_attribute('href'))
我希望这只工作,但是,如果你试图点击的元素是一个链接…
错误信息解释:
错误消息只是说,您想要单击的元素存在,但它不可见。它可能被什么东西覆盖,或者暂时看不见。
元素在测试时不可见的原因有很多。请重新分析您的页面,并为您的情况找到合适的解决方案。
特殊情况的解决方案:
在我的例子中,当我刚刚点击的屏幕元素的工具提示出现在我想要点击的下一步元素上时,就发生了这个错误。离焦是我需要的解决方案。
快速解决散焦的方法是点击屏幕另一部分的其他元素,这些元素“没有”反应。点击动作后什么都不会发生。 正确的解决方案是在弹出工具提示的元素上调用element.blur(),这将使工具提示消失。
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(15));
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.<Id or anything>));
希望这能有所帮助。
我有另一个bug,在Chrome和Poltergeist上的find_link无法单击一个带有EM标签和一些文本的A标签,尽管它在Firefox和rack_test中工作得很好。解决方案是将click_link(link)替换为:
find('a em', text: link).click