首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >selenium-webdriver,chromedriver:"ElementNotVisibleError“

selenium-webdriver,chromedriver:"ElementNotVisibleError“
EN

Stack Overflow用户
提问于 2017-07-29 17:26:42
回答 1查看 454关注 0票数 0

我使用的是带有selenium-webdriver和chromedriver依赖项的NodeJS。我遇到了一点困难来解决为什么我不能让WebDriver.wait()方法协作,正如我所期望的那样。

代码语言:javascript
复制
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()方法来达到预期的结果,但我真的只想了解我在这里缺少了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-29 18:28:23

在我掉了很多头发之后,我设法自己回答了这个问题。

代码语言:javascript
复制
driver.wait(until.elementLocated(By.css(passwordSelector)));
driver.wait(until.elementIsVisible(driver.findElement(By.css(passwordSelector)))).sendKeys(accountPassword);

从本质上讲,我推测只要元素出现在DOM中,WebDriver.elementLocated()就会返回true,但在这一点上,不能保证元素是可见的,因此也有必要等待。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45387642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档