Watin单元测试与Nunit Timing问题

时间:2009-11-26 12:28:13

标签: nunit watin

您好我正在使用WatiN(版本2.0.10.928)和NUnit(2.5.2.9222) 如果我有类似的东西

  [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(); }

然后通常这将工作,测试将通过,但有时当我点击断言似乎Watin还没有完成加载页面,仍然在上一页。我使用IE.Text或IE.Url属性有这个问题。我尝试使用WaitForComplete()(即使这不是必要的)但仍有时会遇到同样的问题。
有人曾经和WatiN有过这个问题吗? 有没有人成功地使用像这样的NUnit WatiN?或者也许它可以更好地使用像MBUnit这样的单元测试框架?有没有人对MBunit有更好的运气?

4 个答案:

答案 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;

这对我有用。