2011-03-12 69 views
1

在最终发布华廷2.0 Internet Explorer的新特性宣布:问题与华廷对IE的新功能2.0最终

“华廷现在将等待IE和 DOM文档去在 “互动”或“准备好”状态 避免不必要的超时”

事实上,在我的项目,我们需要使用旧功能的存在的测试中,当华廷仅等待‘准备好’状态(如我知道它完全加载了网页)。目前,许多测试都失败了。

的主要问题是,华廷试图找到和操纵,经过然而,有些动作不能加载元素(例如,点击按钮)

是否有可能切换华廷的新版本以老工作原则?

+0

梅德嗨,你能添加一些代码示例,失败的原因这种变化?我可以在下一个版本中配置这种等待行为,但我也想更好地理解您遇到的问题。关注Jeroen,主要开发人员WatiN – 2011-03-17 15:54:29

+0

嗨Jeroen,很遗憾,我无法为您提供代码示例。我们现在使用版本2.0.20.0的WatiN RC,它不包含这个问题。我们的问题发生在页面重新加载或浏览器转到页面时。我们应用程序中的页面很大,包含很多标记。所以,如果您选择在WatiN的新功能和旧功能之间切换,我们会很高兴。最好的问候,德米特里 – Dmitry 2011-03-24 14:57:02

回答

0

我相信我有同样的问题。不过,新的Watin的速度改进太棒了!

加载一个页面并执行类似

foreach(TextField t in browser.TextFields) { 
t.setAttribute("value","test"); 
} 

给了我新华廷约1/10的系统未经授权的例外。当发生这种情况browser.text返回""

所以我想的东西打像

while(browser.text=="") { 
System.Thread.Thread.Sleep(500); 
} 

(有休息的情况下,该网页实际上有没有内容)。

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; 
    } 
} 
+0

谢谢,也遇到了这个问题,目前正在测试你的解决方案。 – 2013-01-09 10:43:19