使用C#我试图暂停执行,直到登录后加载页面,所以我使用了这段代码:
for (int second = 0; ; second++)
{
if (second >= 60) Assert.Fail("timeout");
try
{
if (driver.FindElement(By.Id("footer")).Displayed) break;
}
catch (Exception)
{ }
Thread.Sleep(1000);
}
但是我收到系统错误,浏览器Firefox在Thread.Sleep(1000)上显然停止响应;那么我怎么防止呢?
还有另一种暂停执行而不是thread.sleep()的方法吗?
修改: 我现在用的是
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
但它不间断地执行而不等待10秒!!为什么??
答案 0 :(得分:0)
一个灵魂使用自定义WebDriverWait
,其条件如`titleIs'。这意味着驱动程序将轮询页面预定义的时间,等待页面标题与您预期的匹配。在Java中就是这样:
public Boolean waitForPageIsLoaded(String title) {
return new WebDriverWait(driver, 60).until(ExpectedConditions.titleIs(title));
}