硒等待/睡眠命令

cas*_*zlo 2 c# selenium-webdriver

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

_fireFoxWebDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(1000));
Run Code Online (Sandbox Code Playgroud)

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

Str*_*lfa 5

如果使用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")));
Run Code Online (Sandbox Code Playgroud)

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

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

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

这种对我们的等待很有用,因为您无需等待所有的限制时间来查找元素,仅需要必要的时间即可。