无法单击WebElement

时间:2016-03-11 11:08:34

标签: selenium-webdriver webdriver

  

“元素不可点击(1181,0.5666656494140625)。其他   element将收到click:命令持续时间或超时:109毫秒“

我执行脚本时收到此消息 这是我的WebElement:

ano tempo_ativo tempo_extra
0    NULL       8768100
2015 108247387  -4410782
2016 172003845  -7213369

5 个答案:

答案 0 :(得分:1)

很难说没有看到您想要远程控制的页面以及您希望WebDriver点击的元素的Selenium定位器。

但这听起来当鼠标光标从当前元素移动到您想要点击的元素时,页面上会出现一些重叠元素。我有一个类似的问题,我找到了一个解决方法,但它很脏:How to avoid MouseOver on Selenium Click()

如果它不是你正在处理的弹出窗口,你可以尝试我的解决方案。在这种情况下,您可以省略element.SendKeys(Keys.Escape);。但MoveToElement()可能对您有用。

答案 1 :(得分:1)

看起来您尝试点击的元素不可见。您需要等待元素可见,然后执行单击操作。

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60));
IWebElement element = wait.Until<IWebElement>((d) => { return driver.FindElement(By.CssSelector("a[data-original-title='Add new record']")); });
        element.Click();

如果这不起作用,请分享您的完整HTML代码。

答案 2 :(得分:0)

Thread.sleep(6000);

由于页面加载Click()方法无法单击WebElement但我使用sleep()睡眠方法

答案 3 :(得分:0)

如果您的问题是元素从屏幕滚动(并且因此在标题栏之类的内容下滚动),您可以尝试将其滚动到视图中,如下所示:

private void scrollToElementAndClick(WebElement element) {
    int yScrollPosition = element.getLocation().getY();
    js.executeScript("window.scroll(0, " + yScrollPosition + ");");
    element.click();
}

如果需要,还可以添加静态偏移量(例如,如果页面标题高200像素且始终显示):

    public static final int HEADER_OFFSET = 200;

    private void scrollToElementAndClick(WebElement element) {
    int yScrollPosition = element.getLocation().getY() - HEADER-OFFSET;
    js.executeScript("window.scroll(0, " + yScrollPosition + ");");
    element.click();
}

如果仍然无效,请使用JavascriptExecutor。但不推荐

WebElement element= driver.findElement(By.xpath("Your Locator"));

JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);

希望它会对你有所帮助:)。

答案 4 :(得分:0)

可能是由于元素对您的驱动程序不可见。 我建议你申请

Thread.sleep(10000);

因此,元素将可见,驱动程序将执行预期的操作。