我只在Chrome浏览器中看到这个。

完整的错误信息如下:

“org.openqa.selenium。WebDriverException:元素在点(411,675)不可点击。其他元素会收到点击:……”

“将接收点击”的元素位于相关元素的一侧,而不是在元素的顶部,也没有重叠,也没有在页面上移动。

我试过加一个偏移量,但也不行。该项目在显示的窗口上,不需要滚动。


当前回答

当使用量角器时,这帮助了我:

var elm = element(by.css('.your-css-class'));
browser.executeScript("arguments[0].scrollIntoView();", elm.getWebElement());
elm.click();

其他回答

我也遇到了同样的问题,花了好几个小时才找到解决办法。我试着用量角器点击一个长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)")

在测试了所有提到的建议后,没有一个奏效。我写了这个代码。它有效,但并不漂亮

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();
            }
        }
    }
}

这可能会帮助那些正在使用WebdriverIO的人:

function(){
    var runInBrowser = function(argument) { 
        argument.click();
    };
    var elementToClickOn = browser.$('element');
    browser.execute(runInBrowser, elementToClickOn);
}

来源:https://www.intricatecloud.io/2018/11/webdriverio-tips-element-wrapped-in-div-is-not-clickable/

有趣的是,我花了这么多时间研究各种各样的答案,没有人尝试过显而易见的答案,当然,我也没有。如果您的页面多次使用相同的id,就像我的页面一样("newButton",),而您想要的id不是第一个找到的,那么您很可能会得到这个错误。最简单的事情(c#):

var testIt = driver.FindElements(By.Id("newButton"));

注意它是FindElements,而不是FindElement。

然后测试从检索中得到了多少结果。如果是第二个,你可以使用:

testit[1].Click();

或者让那些重复使用id的人来修复它们。

我在python中运行selenium脚本时遇到了同样的问题。下面是我用来点击元素的:

from selenium.webdriver.common.action_chains import ActionChains


ActionChains(driver).click(element).perform()