2017-07-29 148 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,但在這一點上,它不保證該元素是可見的,因此有必要等待,這也。