0

好的,所以我一直在尝试单元测试。我正在使用 Nunit 和 WatiN 进行测试,并决定尝试实现 WatiN 测试记录器。我不知道是否有人熟悉它,但我使用的是 2.0 构建(测试版) 我从测试记录器中直接提取了以下代码,并且只是稍微清理了一下。

 [TestFixture, RequiresSTA]
class WatiNTesting
{
    [Test]
    public void WatiNTest()
    {
        IE window = new IE("http://www.google.com");
        TextField txt_q = window.TextField(Find.ByName("q"));
        Element Locate = window.Element(Find.ByText("") && Find.ByValue("") && Find.ById("") && Find.BySrc("") && Find.ByUrl(""));
        Link lnk_wwwvietnamesetestingboardorgzbxemiddownloadcategory197510 = window.Link(Find.ByUrl("http://www.vietnamesetestingboard.org/zbxe/?mid=download&category=197510"));

        txt_q.TypeText("Watin");
        Locate.Click();
        lnk_wwwvietnamesetestingboardorgzbxemiddownloadcategory197510.Click();
        window.Dispose();            
    }
}

每当我运行它时,窗口都会打开 goolge 然后 Nununit 返回此错误:

Failure: System.UriFormatException : Invalid URI: The hostname could not be parsed.

有谁知道如何摆脱这个错误或绕过它的方法?

4

3 回答 3

1

你有没有试过找到这样的东西:

Link link = window.Link(Find.By("rawurl", "http://www.vietnamesetestingboard.org/zbxe/?mid=download&category=197510"));
于 2011-12-23T10:54:25.450 回答
0

好的,第一个问题似乎与此行上的 Find.ByUrl 调用有关...

Element Locate = window.Element(Find.ByText("") && Find.ByValue("") && 
    Find.ById("") && Find.BySrc("") && Find.ByUrl(""));

去掉它...

Element Locate = window.Element(Find.ByText("") && Find.ByValue("") &&
    Find.ById("") && Find.BySrc(""));

它通过了。不太确定您要在这里完成什么,但希望这会有所帮助。

于 2011-12-13T21:49:45.830 回答
0

This might be occurring due to the presence of the ? character in your URL and the way WatiN internally operates while performing a find operation

You might want to try this

Link lnk_wwwvietnamesetestingboardorgzbxemiddownloadcategory197510 = window.Link(Find.ByUrl(new Regex(@"^http://www.vietnamesetestingboard.org/zbxe/\?mid=download&category=197510$")));

This uses a Regex overload for finding the URL and will escape the ? character.

于 2011-12-14T09:10:13.753 回答