带Nunit定时问题的Watin单元测试

带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一起使用?或者,如果使用不同的单元

您好,我正在将WatiN(版本2.0.10.928)与NUnit(版本2.5.2.9222)一起使用 如果我有

然后通常这会起作用,测试会通过,但有时当我点击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;