“元素不可点击(1181,0.5666656494140625)。其他 element将收到click:命令持续时间或超时:109毫秒“
我执行脚本时收到此消息 这是我的WebElement:
ano tempo_ativo tempo_extra
0 NULL 8768100
2015 108247387 -4410782
2016 172003845 -7213369
答案 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);
因此,元素将可见,驱动程序将执行预期的操作。