带Nunit定时问题的Watin单元测试
您好,我正在将WatiN(版本2.0.10.928)与NUnit(版本2.5.2.9222)一起使用 如果我有带Nunit定时问题的Watin单元测试,nunit,watin,Nunit,Watin,您好,我正在将WatiN(版本2.0.10.928)与NUnit(版本2.5.2.9222)一起使用 如果我有 然后通常这会起作用,测试会通过,但有时当我点击assert时,Watin似乎还没有完成加载页面,仍然在上一页。我在使用IE.Text或IE.Url属性时遇到这个问题。我尝试使用WaitForComplete()(尽管这不是必需的),但有时仍然会遇到同样的问题。 以前有人和WatiN有过这样的问题吗? 有没有人能像这样成功地将WatiN与NUnit一起使用?或者,如果使用不同的单元
然后通常这会起作用,测试会通过,但有时当我点击assert时,Watin似乎还没有完成加载页面,仍然在上一页。我在使用IE.Text或IE.Url属性时遇到这个问题。我尝试使用WaitForComplete()(尽管这不是必需的),但有时仍然会遇到同样的问题。
以前有人和WatiN有过这样的问题吗?
有没有人能像这样成功地将WatiN与NUnit一起使用?或者,如果使用不同的单元测试框架(如MBUnit),它会工作得更好?有谁比MBunit更走运吗?恐怕您使用的测试框架不会有什么不同——这是任何屏幕抓取测试框架的“陷阱”之一,WaTin也不例外 很抱歉,
WaitForComplete()
调用是绝对必要的
我的一些同事报告说IE的版本可以带来不同;IE6尤其存在一些可能导致问题的内部计时问题。IE8似乎要好一点 尝试使用
Settings.AttachToBrowserTimeOut = 200;
Settings.WaitForCompleteTimeOut = 200;
谢谢
甘地·拉詹(Gandhi Rajan)我的考试也有同样的问题;不幸的是,您似乎不能假定
Click()
方法中固有的WaitForComplete()
将正常工作。即使之后显式调用WaitForComplete()
,也并不总是有效的
作为最后的手段,我们使用了
System.Threading.Thread.Sleep(int timeout,以毫秒为单位)
强制浏览器给页面加载时间。这并不是一种完全防弹的方法,但它已经消除了大约90%的此类错误。对于超时,我们使用了500到2000毫秒的时间,这取决于加载所需的时间以及我们希望测试运行的速度。我使用了ie.WaitForComplete(),但它仍然强制等待,有时超时,所以我使用
这对我有用
[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();
}
Settings.AttachToBrowserTimeOut = 200;
Settings.WaitForCompleteTimeOut = 200;