selenium-webdriver,chromedriver:" ElementNotVisibleError"

时间:2017-07-29 09:26:42

标签: node.js selenium selenium-webdriver

我使用NodeJS,使用selenium-webdriver和chromedriver依赖项。我正在解决为什么我无法使用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:元素不可见"错误信息作为结果?我可以使用WebDriver.sleep()方法达到预期的结果,但实际上只是想了解我在这里缺少的内容。

1 个答案:

答案 0 :(得分:0)

我经过很多失去的头发后,设法自己回答了这个问题。

driver.wait(until.elementLocated(By.css(passwordSelector)));
driver.wait(until.elementIsVisible(driver.findElement(By.css(passwordSelector)))).sendKeys(accountPassword);

基本上,我已经收集到WebDriver.elementLocated()只要元素存在于DOM中就返回true,但此时,不能保证元素是可见的,因此也需要等待