我使用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()
方法达到预期的结果,但实际上只是想了解我在这里缺少的内容。
答案 0 :(得分:0)
我经过很多失去的头发后,设法自己回答了这个问题。
driver.wait(until.elementLocated(By.css(passwordSelector)));
driver.wait(until.elementIsVisible(driver.findElement(By.css(passwordSelector)))).sendKeys(accountPassword);
基本上,我已经收集到WebDriver.elementLocated()
只要元素存在于DOM中就返回true,但此时,不能保证元素是可见的,因此也需要等待