Selenium 异常错误 - 元素在 (x,y) 点不可点击。其他元素将接收点击事件


在使用 Selenium webdriver 时,我们可能会遇到 Selenium 异常错误 - 元素在点 (x,y) 处不可点击。其他元素将接收点击事件。

这通常在从 Chrome 浏览器执行 Selenium 测试时看到,而在其他浏览器(如 IE 和 Firefox)中则不会。发生这种情况是因为 Chrome 浏览器无法计算出 web 元素的正确位置。

此外,在 Chrome 浏览器中,元素在其中间位置被点击。由于应用程序和 Selenium 之间发生的同步问题,也可能遇到此异常。

有一些解决此问题的方案,如下所列:

  • 我们应该确保我们使用的是最新版本的 chromedriver,并且它与我们本地系统中 Chrome 浏览器的版本兼容。

  • 获取 web 元素的坐标,然后使用 Actions 类中的方法在其上执行点击操作。

语法

WebElement elm = driver.findElement(By.tagName("input"));
//instance of Point class
Point location = elm.getLocation();
//get x, y coordinates
int m = location.getX();
int n = location.getY();
//instance of Actions class
Actions a = new Actions(driver);
a.moveToElement(elm,m,n).click().build().perform();
  • 使用 JavaScript 执行器获取 web 元素的坐标并点击它。

获取 x 坐标的语法:

WebElement l = driver.findElement(By.tagName("input"));
JavascriptExecutor j =(JavascriptExecutor)driver;
j.executeScript(
   "window.scrollTo(0,"l.getLocation().x+")");
l.click();

获取 y 坐标的语法:

WebElement l = driver.findElement(By.tagName("input"));
JavascriptExecutor j =(JavascriptExecutor)driver;
"window.scrollTo(0,"l.getLocation().y+")");
l.click();

更新于: 2021年6月29日

1K+ 阅读量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告