2017-07-29 125 views
0

Gidday所有,硒webdriver的,chromedriver: “ElementNotVisibleError”

我使用的NodeJS,与硒的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()方法达到期望的结果,但真的只是想了解我在这里失踪的内容。

干杯。

回答

0

我已经设法回答这一个在我自己的头发后很多丢失。

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

从本质上讲,我已经收集那WebDriver.elementLocated()返回true,只要元素存在于DOM,但在这一点上,它不保证该元素是可见的,因此有必要等待,这也。