您好我正在使用WatiN(版本2.0.10.928)和NUnit(2.5.2.9222)
如果我有类似的东西
然后通常这将工作,测试将通过,但有时当我点击断言似乎Watin还没有完成加载页面,仍然在上一页。我使用IE.Text或IE.Url属性有这个问题。我尝试使用WaitForComplete()(即使这不是必要的)但仍有时会遇到同样的问题。[Test] public void WebPageTest() { string url = "www.google.com"; IE ie = new IE(url);
ie.TextField(Find.ByTitle("Google Search")).TypeText("Watin"); ie.Button(Find.ByName("btnG")).Click();
ie.Element(Find.ByText("WatiN")).Click();// ie.WaitForComplete(); Assert.IsTrue(ie.Text.Contains("Welcome at the WatiN")); ie.Close(); }
// ie.WaitForComplete(); Assert.IsTrue(ie.Text.Contains("Welcome at the WatiN")); ie.Close(); }
答案 0 :(得分:1)
你使用的测试框架没什么区别,我担心 - 这是任何屏幕抓取测试框架的“陷阱”之一,而且WaTin没有什么不同。
我担心WaitForComplete()
电话肯定是必要的。
我的一些同事报告说,IE的版本可以有所作为; IE6尤其存在一些可能导致问题的内部时序问题。 IE8看起来好多了。
答案 1 :(得分:1)
我的测试遇到了同样的问题;遗憾的是,似乎你并不认为WaitForComplete()
方法中固有的Click()
能够正常运行。即使之后明确地调用WaitForComplete()
并不总是有效。
作为最后的手段,我们使用System.Threading.Thread.Sleep(int timeout_in_milliseconds)
强制浏览器为页面加载时间。这不是一个完全无懈可击的手段,但它消除了大约90%的这类错误。对于超时,我们使用了500到2000毫秒的任何时间,具体取决于加载所需的时间以及我们希望测试运行的速度。
答案 2 :(得分:0)
尝试使用
[Test]
public void WebPageTest()
{
string url = "www.google.com";
IE ie = new IE(url);
ie.TextField(Find.ByTitle("Google Search")).TypeText("Watin");
var btnG = ie.Button(Find.ByName("btnG"));
btnG.ClickNoWait();
ie.WaitForComplete(400);
var elementWatin = ie.Element(Find.ByText("WatiN"));
elementWatin.ClickNoWait();
ie.WaitForComplete(400);
Assert.IsTrue(ie.Text.Contains("Welcome at the WatiN"));
ie.Close();
}
由于 甘地拉詹
答案 3 :(得分:-1)
我已经使用过ie.WaitForComplete()但它仍然会强制执行等待,有时会超时,所以我使用
Settings.AttachToBrowserTimeOut = 200;
Settings.WaitForCompleteTimeOut = 200;
这对我有用。