Selenium - 元素无法点击
我们可能会收到错误-元素在尝试单击Seleniumwebdriver中的链接时无法单击。这在chromedriver中很常见,因为Chrome浏览器通过点位置确定元素。
当一个元素的位置发生变化并且我们试图点击它时,就会遇到这个错误。这是因为元素存在于DOM中,但它的位置在页面上并不固定。
有一些解决方法可以修复此错误,如下所示-
添加显式等待。webdriver可以等到预期的条件-visibilityOf(webdrivershallwaitforanelementinDOMtobevisible)。
添加显式等待。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();