Selenium 异常错误 - 元素在 (x,y) 点不可点击。其他元素将收到点击
我们可能会遇到SeleniumExceptionError-Elementisnotclickableatpoint(x,y)。其他元素会在工作Seleniumwebdriver时收到点击。
这通常是在从Chrome浏览器执行Selenium测试时看到的,而不是在其他浏览器(如IE和Firefox)中。发生这种情况是因为Chrome浏览器无法计算网络元素的正确位置。
此外,在Chrome浏览器中,元素在其中间位置被点击。由于应用程序和Selenium之间发生同步问题,也可能遇到此异常。
存在一些解决此问题的解决方案,如下所示-
我们应该确保我们使用的是最新版本的chromedriver,并且它与我们本地系统中的Chrome浏览器版本兼容。
获取webelement的坐标,然后使用Actions类中的方法对其进行单击。
语法
WebElement elm = driver.findElement(By.tagName("input")); //Point类的实例 Point location = elm.getLocation(); //得到x,y坐标 int m = location.getX(); int n = location.getY(); //Actions类的实例 Actions a = new Actions(driver); a.moveToElement(elm,m,n).click().build().perform();
获取webelement的坐标并使用JavaScriptExecutor单击它。
获取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();