【问题标题】:WatiN - Failure: System.UriFormatException : Invalid URI: The hostname could not be parsedWatiN - 失败:System.UriFormatException:无效的 URI:无法解析主机名
【发布时间】:2011-12-13 20:59:19
【问题描述】:

好的,所以我一直在尝试单元测试。我正在使用 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.

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

【问题讨论】:

    标签: c# watin nunit-2.5


    【解决方案1】:

    您是否尝试过查找类似的内容:

    Link link = window.Link(Find.By("rawurl", "http://www.vietnamesetestingboard.org/zbxe/?mid=download&category=197510"));
    

    【讨论】:

      【解决方案2】:

      好的,第一个问题似乎与此行上的 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(""));
      

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

      【讨论】:

      • 不是我,而是 WatiN 测试记录器提供的...我以为记录器会让我的生活更轻松,但它似乎只是让它变得更复杂哈哈。但是,删除该行并没有使它起作用。同样的错误。
      【解决方案3】:

      这可能是由于存在 ? URL 中的字符以及 WatiN 在执行查找操作时内部操作的方式

      你可能想试试这个

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

      这使用正则表达式重载来查找 URL,并将转义 ?特点。

      【讨论】:

      • 还是不行。应用程序打开一个谷歌窗口并输入 WatiN 然后大约 1 分钟后它返回此消息:“失败:WatiN.Core.Exceptions.ElementNotFoundException:找不到元素标记匹配条件:'''属性'innertext'匹配'^ * *$'' And 'Attribute 'value' equals '''' And 'Attribute 'id' equals '''' And 'Attribute 'src' equals ''' at vietnamesetestingboard.org/zbxe/?document_srl=432065 (内部异常:访问被拒绝。"
      • 当您尝试单击它时,DOM 中是否存在具有该 src 属性的链接?为什么不尝试从正则表达式中删除 ^ 和 $?这可能会有所帮助。您现在看到的异常是因为您尝试单击的链接在您单击时在 DOM 中不存在。由于无效字符(在 REGEX 中使用时)导致 URL 解析失败而导致的异常。
      猜你喜欢
      • 2011-02-18
      • 1970-01-01
      • 2011-05-11
      • 2016-01-28
      • 2023-03-09
      • 1970-01-01
      • 2017-08-04
      • 2015-06-03
      • 2023-03-20
      相关资源
      最近更新 更多