出现此错误:“元素在该点不可点击”


在使用 Selenium webdriver 时,我们可能会遇到“元素在该点不可点击”的错误。由于 Chrome 浏览器使用点位置来识别元素,因此这通常发生在 chromedriver 中。

当元素的位置是动态的,并且我们想要点击该元素时,就会抛出此错误。此错误的原因是,如果元素在 DOM 中可用,但其位置在前端是动态的。

下面列出了一些解决此问题的方法:

  • 使用显式等待。我们可以等待预期条件 - visibilityOf。webdriver 将等待 DOM 中可用的元素可见。

  • 使用显式等待。我们可以等待预期条件 - visibilityOfElementLocated。webdriver 将等待元素在 DOM 中可用并可见。

  • 最大化浏览器大小。

语法

driver.manage().window().maximize();
  • 使用 Actions action。

语法

WebElement m = driver.findElement(By.id("txt-loc"));
Actions a = new Actions(driver);
a.moveToElement(m).click().perform();
  • 使用 JavaScript 执行器。

获取 x 轴位置的语法:

WebElement m = driver.findElement(By.id("txt"));
JavascriptExecutor j =(JavascriptExecutor)driver;
j.executeScript(
   "window.scrollTo(0,"m.getLocation().x+")");
   m.click();

获取 y 轴位置的语法:

WebElement n = driver.findElement(By.id("txt"));
JavascriptExecutor j =(JavascriptExecutor)driver;
j.executeScript(
   "window.scrollTo(0,"n.getLocation().y+")");
   m.click();

更新于: 2021-06-29

627 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告