gpt4 book ai didi

c# - NoSuchElementException 尽管使用 WebDriverWait

转载 作者:行者123 更新时间:2023-11-30 16:47:55 25 4
gpt4 key购买 nike

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

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

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 在查找之前出现?

最佳答案

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

 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");

关于c# - NoSuchElementException 尽管使用 WebDriverWait,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38773372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com