首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尽管使用了WebDriverWait,但仍使用NoSuchElementException

尽管使用了WebDriverWait,但仍使用NoSuchElementException
EN

Stack Overflow用户
提问于 2016-08-05 01:01:35
回答 1查看 1.2K关注 0票数 3

我使用Selenium来定位一个元素并用文本填充它。当我浏览到我的URL时,首先显示一个文本框来加载页面。加载应用程序后,将显示登录用户名/密码。我只想等到显示登录用户名/密码,以避免出现NoSuchElementException。我已经引用了this post,但无法让那里的任何解决方案正常工作。

当我运行测试时,它不等待元素出现,并立即在x.FindElement(By.Id("UserName")上失败,并显示一个NoSuchElementException

代码语言:javascript
复制
using (IWebDriver driver = new ChromeDriver(@"<my path>"))
{
    driver.Manage().Window.Maximize();

    driver.Navigate().GoToUrl("<my url>");

    var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(600));
    var userName = wait.Until(x => x.FindElement(By.Id("UserName")));

    userName.SendKeys("username");

    IWebElement pass = driver.FindElement(By.Id("Password"));
    pass.SendKeys("password");
}

我在这里做错了什么?我应该如何更改代码,以便在查找UserName id之前等待它出现?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-05 01:39:41

我认为你需要先等待加载元素不可见,然后再去等待用户名的可见性,如下所示:-

代码语言:javascript
复制
 var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));

wait.Until(ExpectedConditions.InvisibilityOfElementLocated(By.ID("id of loading element ")));

//Now go to find username element 
var userName = wait.Until(ExpectedConditions.ElementIsVisible(By.ID("UserName")));
userName.SendKeys("username");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38773372

复制
相关文章

相似问题

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