我使用的是带有selenium-webdriver和chromedriver依赖项的NodeJS。我遇到了一点困难来解决为什么我不能让WebDriver.wait()方法协作,正如我所期望的那样。
require('chromedriver');
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;
var driver = new webdriver.Builder()
.forBrowser('chrome')
.build();
...
driver.findElement(By.css(userSelector)).sendKeys(accountUsername);
driver.findElement(By.css(userNextButton)).click();
driver.wait(until.elementLocated(By.css(passwordSelector))).then(function() {
driver.findElement(By.css(passwordSelector)).sendKeys(accountPassword);
driver.findElement(By.css(passwordNextButton)).click();
});
...你能帮我排查一下为什么会出现"ElementNotVisibleError: element not visible“的错误信息吗?我可以使用WebDriver.sleep()方法来达到预期的结果,但我真的只想了解我在这里缺少了什么。
发布于 2017-07-29 18:28:23
在我掉了很多头发之后,我设法自己回答了这个问题。
driver.wait(until.elementLocated(By.css(passwordSelector)));
driver.wait(until.elementIsVisible(driver.findElement(By.css(passwordSelector)))).sendKeys(accountPassword);从本质上讲,我推测只要元素出现在DOM中,WebDriver.elementLocated()就会返回true,但在这一点上,不能保证元素是可见的,因此也有必要等待。
https://stackoverflow.com/questions/45387642
复制相似问题