收到此错误:“元素在该点不可点击”

我们可以得到错误 - 元素在使用 Selenium webdriver 时无法点击。这通常发生在 chromedriver 中,因为 Chrome 浏览器利用点位置来识别元素。

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

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

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

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

  • 最大化浏览器大小。

语法

driver.manage().window().maximize();

  • 动作动作的使用。

语法

WebElement m = driver.findElement(By.id("txt-loc"));
Actions a = new Actions(driver);
a.moveToElement(m).click().perform();

  • JavaScript Executor 的使用。

获取 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();