c# - Selenium 等待/ sleep 命令

标签 c# selenium-webdriver

为什么这个 Selenium C# 代码不等待元素加载?!

_fireFoxWebDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(1000));

我也使用了Thread.Sleep(5000); 也不行!有人可以向我解释一下吗!

最佳答案

如果您使用Thread.Sleep(5000),测试将仅等待5秒并返回执行。如果您需要等待一个不存在或不可见的元素,您应该使用WebDriverWait。示例:

var timeout = 10000; // in milliseconds
var wait = new WebDriverWait(Driver, TimeSpan.FromMilliseconds(timeout));
wait.Until(ExpectedConditions.ElementIsVisible(By.CssSelector("your-selector")));

此外,如果您需要等待页面加载,可以使用以下代码:

var timeout = 10000; // in milliseconds
var wait = new WebDriverWait(Driver, TimeSpan.FromMilliseconds(timeout));
wait.Until(d => ((IJavaScriptExecutor)d).ExecuteScript("return document.readyState").Equals("complete"));

在这两种情况下,10 秒是查找元素的限制时间。如果此时没有找到任何元素,则测试不会通过。否则,如果在 5 秒内找到一个元素,则代码不会等待剩余的所有秒数,而是将继续执行下一个代码行。

这种等待非常有用,因为您不需要等待所有限制时间来查找元素,只需等待必要的时间即可。

关于c# - Selenium 等待/ sleep 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37170573/

相关文章:

python - 错误 : Could not find a version that satisfies the requirement webdriver (from versions: )

python - 使用 Selenium 选择具有更改值的单选按钮

selenium - 如何在 Selenium 中按 shift + ctrl + s

c# - ASP.NET MVC : 'Extend' Html. TextBox 有条件地具有 CSS 值?

c# - 如果多个条目具有相同的值,List.OrderBy() 的结果是什么?

c# - 使用 Fluent NHibernate 执行 Sql 语句

java - 通过 Selenium 运行 JUnit 测试用例时出错

c# - LINQ to SQL IQueryable 是否可以意外求值?

c# - 在 GridView 中显示列表

java - 当第一个场景失败时如何跳过所有 cucumber-jvm 场景