为什么这个 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/