如何使用watir-webdriver通过文本找到另一个元素的孙元素?

时间:2012-08-13 18:43:16

标签: html html-lists watir-webdriver

我有一些像这样的HTML:

<ul id="directory">
    <li><a id="first" href="/first">first</a></li>
    <li><a id="second" href="/second">second</a></li></ul>

我想找到id为“second”的链接,根据其文本以及与id为“directory”的ul的关系,然后使用watir-webdriver单击它。

似乎应该简单地说:

browser.ul(:id => 'directory').li.a(:text => 'second')

但这不存在。

经过研究,我想也许我应该这样做:

browser.ul(:id => 'directory').lis.a(:text => 'second')

LICollection甚至没有a方法。我想也许我应该用each做一些事情,但我不知道它会是什么。

有一种很好的方法可以识别这个元素,而不需要使用这些标准来使用CSS或XPath选择器:

  1. 这是一个锚。
  2. 文字'second'。
  3. 它是li元素的子元素,它是ul元素的子元素,具有ID“directory”。

2 个答案:

答案 0 :(得分:2)

你可以这样做:

browser.ul(:id => 'directory').a(:text => 'second')

在Watir-Webdriver中,您无需指定li元素即可访问该链接。同样,假设一个合理形成的HTML页面,ul元素中的任何链接都将在li元素中(即我相信ul元素中唯一允许的直接子元素是li元素。)

答案 1 :(得分:0)

browser.ul(:id =&gt;&#39;目录&#39;)。a(:id =&gt;&#39; second&#39;)

让我知道上述声明是否有效。