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();
广告