Selenium - 元素在指定点不可点击


在尝试使用 Selenium webdriver 点击链接时,我们可能会遇到错误 - 元素在指定点不可点击。这在 chromedriver 中很常见,因为 Chrome 浏览器通过点位置确定元素。

当元素的位置发生变化并且我们尝试点击它时,就会遇到此错误。这是因为元素存在于 DOM 中,但其在页面上的位置不固定。

有一些解决方法可以修复此错误,如下所示:

  • 添加显式等待。webdriver 可以等待直到满足预期条件 - visibilityOf(webdriver 将等待 DOM 中的元素可见)。

  • 添加显式等待。webdriver 可以等待直到满足预期条件 - visibilityOfElementLocated。webdriver 将等待元素出现在 DOM 中并在页面上显示。

  • 最大化浏览器窗口大小。

语法

driver.manage().window().maximize()
  • 添加 Actions 类的方法。

语法

WebElement l = driver.findElement(By.name("field-name"));

Actions at = new Actions(driver);
at.moveToElement(l).click().perform();
  • JavaScript 执行器。

获取沿 x 轴位置的语法:

WebElement l = driver.findElement(By.name("field-name"));
JavascriptExecutor je =(JavascriptExecutor)driver;
je.executeScript("window.scrollTo(0,"l.getLocation().x+")");
l.click();

获取沿 y 轴位置的语法:

WebElement l = driver.findElement(By.name("field-name"));
JavascriptExecutor je =(JavascriptExecutor)driver;
je.executeScript("window.scrollTo(0,"l.getLocation().y+")");
l.click();

更新于:2021年6月25日

8K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告