Watin - 找不到链接元素(Javascript)

时间:2011-06-17 14:45:29

标签: watin

我正在使用watin来自动化网络系统上的进程(内部)。

我可以打开网站并访问某些链接,但其他链接无法找到。我认为这可能是因为它们是深度嵌套的,或者因为href是javascript。这是他们所处的格式:

    <frame>
     <html>
      <frameset>
       <frame>
        <html>
         <body>
          <div>
           <table>
            <table>
             <tr>
              <td>
               <a id="1_1_1_a" href="javascript:blah" </a>

我尝试过各种不同的方式来找到id,元素类型等。但我坚持这个。

有人可以帮忙吗?

由于

3 个答案:

答案 0 :(得分:0)

帧中的元素必须通过其帧进行搜索,因为每个帧在WatIn中被视为单独的命名空间。因此,首先获取正确的帧(通过调用Frame方法或通过Frames属性 - 请注意,在您的示例中,您必须执行两次,因为您有两个嵌套帧),然后搜索链接,例如:

ie.Frames[0].Frames[0].Link("1_1_1_a")

答案 1 :(得分:0)

试试这个

        using (var browser = new IE("your_web_site_here"))
        {
            try
            {
            Frame first_frame = browser.Frame(Find.ById("frame_1_id"));
            Frame second_frame = first_frame.Frame(Find.ById("frame_2_id"));
            var first_div = second_frame.Div(Find.ById("first_div_id"));
            Assert.IsTrue(first_div.Exists);
            var Link_to_click = first_div.Link(Find.ById("1_1_1_a"));
            Assert.IsTrue(Link_to_click.Exists);
            Link_to_click.Click();
            }
            catch (Exception ex)
            {

            }
         }

有时候watin找不到元素我仍在试图找出原因和前提条件。

答案 2 :(得分:0)

我有一个类似的问题,我的测试将浏览到一个页面上有40个链接,即使你可以看到页面上的所有链接,下面的语句将显示链接(和其他元素集合)的计数零。

ie.Links.Count();

我仍然不确定底层问题是什么,但我发现如果你通过右键单击 - &gt;启动Gallio Icarus / Gallio Echo / Visual Studio(或任何你正在使用的测试运行器)以管理员身份运行,测试按预期工作,并且元素正确加载到ie浏览器对象中。