在WatiN的最终版本2.0中,宣布了Internet Explorer的新功能:
“WatiN现在将等待IE和 DOM文档到达 '互动'或'准备'状态 避免不必要的超时“
事实上,在我的项目中,当WatiN只等待“就绪”状态时(我知道它是完全加载网页),我们需要对现有测试使用旧功能。目前,许多测试都失败了。
主要问题是 WatiN尝试在某些操作后找到并操纵未加载的元素(例如,点击按钮)
是否可以将新版本的WatiN切换为旧工作原理?
答案 0 :(得分:1)
尝试此扩展方法
public static void WaitForReady(this Browser browser)
{
int timeWaitedInMilliseconds = 0;
var maxWaitTimeInMilliseconds = Settings.WaitForCompleteTimeOut * 1000;
while (browser.Eval("document.readyState") != "complete" && timeWaitedInMilliseconds < maxWaitTimeInMilliseconds)
{
Thread.Sleep(Settings.SleepTime);
timeWaitedInMilliseconds += Settings.SleepTime;
}
}
答案 1 :(得分:0)
我相信我遇到了同样的问题。不过,新Watin的速度提升非常棒!
加载页面并执行类似
的操作foreach(TextField t in browser.TextFields) {
t.setAttribute("value","test");
}
给我一个系统未经授权的例外,新Watin约1/10次。发生这种情况时,browser.text
会返回""
所以我想要玩像
这样的东西while(browser.text=="") {
System.Thread.Thread.Sleep(500);
}
(如果页面实际上没有文本,则中断)。