【问题标题】:Finding sibling of a link while using watir-WebDriver使用 Watir-WebDriver 时查找链接的兄弟
【发布时间】:2011-07-04 06:27:33
【问题描述】:

我正在使用 watir-WebDriver 来自动化网站测试自动化。我必须访问 Sibling 链接。

看起来像这样

Something > Something 2 > 当前页面标题 (链接1) (链接2) (文本1)

我有 text1 的类 id,我必须通过单击链接 2 返回到 Something 2。

我如何得到这个。

【问题讨论】:

  • “一个例子现在就可以派上用场了” (exampler.com/blog/2007/08/07/marketing-mania-continues)
  • 如果你能给出一个HTML格式的例子,那将是最有帮助的,你表达它的方式我不确定什么是容器,容器旁边是什么等等。在允许人们提供更好的建议或代码示例方面,实际的 HTML 会更有帮助。

标签: ruby automation watir webdriver


【解决方案1】:

我认为你可以通过 elements_by_xpath 获得兄弟链接。

例子


HTML 源代码:

文字


watir-webdriver 脚本:

p(:class,'baz').elements_by_xpath('preceding-sibling::*')[-1]

【讨论】:

    【解决方案2】:

    如果您可以找到两个兄弟姐妹的共同父级,则可以转到该父级,然后使用以下方式从该点选择元素:

    源代码:

    <tr>
      <th>No. of films</th>
      <td>7</th>
    </tr>
    

    scrape(@b 是浏览器对象)

    @b.th(:text => "No. of films").parent.tds.first.text
    #=> 7
    

    【讨论】:

      【解决方案3】:

      如果 (text1) 是 (link2) 的子级,您可以尝试:

      (text1).parent

      【讨论】:

        【解决方案4】:

        如果我理解正确,您有某种容器元素,例如 div,其中包含两个链接和一些文本。不清楚的是文本是否属于外部容器,还是在它自己的容器内。鉴于您说您有文本的“classid”(是类?还是 id?),我将假定它在它自己的容器元素中。

        这样的话

        browser.element(:class, 'value').parent.link(:index, 2).click
        

        如果没有实际的 HTML 样本,即更清晰的 DOM 模型,这是我能做的最好的事情

        【讨论】:

          【解决方案5】:

          正如前面所有答案所说,您必须在此层次结构之上有一个参考点。然后browser.p(:id, 'known').parent.links[1].click 将完成这项工作。但如果你真的不这样做,试试这个绝望的简单方法:

          browser.link(:text =&gt; 'Something 2').click

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-08-14
            • 2016-12-20
            • 1970-01-01
            • 1970-01-01
            • 2017-06-02
            • 1970-01-01
            • 1970-01-01
            • 2011-09-17
            相关资源
            最近更新 更多