我们可能会收到错误 - 元素在尝试单击 Selenium webdriver 中的链接时无法单击。这在 chromedriver 中很常见,因为 Chrome 浏览器通过点位置确定元素。
当一个元素的位置发生变化并且我们试图点击它时,就会遇到这个错误。这是因为元素存在于 DOM 中,但它的位置在页面上并不固定。
有一些解决方法可以修复此错误,如下所示 -
添加显式等待。webdriver 可以等到预期的条件 - visibilityOf(webdriver shall wait for an element in DOM to be visible)。
添加显式等待。webdriver 可以等到预期的条件 -visibilityOfElementLocated。webdriver 应等待元素出现在 DOM 中并显示在页面上。
最大化浏览器的大小。
语法
driver.manage().window().maximize()
添加 Actions 类的方法。
语法
WebElement l = driver.findElement(By.name("field-name")); Actions at = new Actions(driver); at.moveToElement(l).click().perform();
JavaScript 执行器。
沿 x 轴获取位置的语法 -
WebElement l = driver.findElement(By.name("field-name")); JavascriptExecutor je =(JavascriptExecutor)driver; je.executeScript("window.scrollTo(0,"l.getLocation().x+")"); l.click();
沿 y 轴获取位置的语法 -
WebElement l = driver.findElement(By.name("field-name")); JavascriptExecutor je =(JavascriptExecutor)driver; je.executeScript("window.scrollTo(0,"l.getLocation().y+")"); l.click();