Cucumber 如何在黄瓜测试中找到该元素

Cucumber 如何在黄瓜测试中找到该元素,cucumber,watir,Cucumber,Watir,在cucumber测试中,我需要在我的页面上选择一个href,一个没有id属性的href。我感兴趣的DOM部分如下所示: <div id="MyTabs"> <h1 id="PageName"> My Items </h1> <ul class="Tabs"> <li class="pageTab on"> <a href="/the/History

在cucumber测试中,我需要在我的页面上选择一个href,一个没有id属性的href。我感兴趣的DOM部分如下所示:

<div id="MyTabs">
    <h1 id="PageName">
        My Items
    </h1>
    <ul class="Tabs">
        <li class="pageTab  on">
            <a href="/the/History.aspx">History</a>
        </li>
        <li class="pageTab ">
            <a href="/the/Favorites">Favorites</a>
        </li>
        <li class="pageTab ">
            <a href="/the/Details">Details</a>
        </li>
        <li class="pageTab ">
            <a href="/the/Preferences">Preferences</a>
        </li>
    </ul>
</div>

我的物品

我需要获取与“首选项”相关的link元素,但不确定如何通过
链接获取它(:how_do__I_获取\u this_this东西

这实际上取决于链接的独特性。但是,根据提供的html,以下内容可能会起作用

根据文本获取链接:

browser.link(:text => 'Preferences').exists?
根据href属性获取链接:

browser.link(:href => /the\/Preferences/).exists?
如果有多个带有文本首选项的链接,您可以将搜索范围限定到特定的div,该div应该是唯一的,因为它有一个id:

browser.div(:id => 'MyTabs').link(:text => 'Preferences').exists?

谢谢,这非常有用。有没有一种方法可以基于CSS类进行查询/深入研究?例如,如果父div有一个“divclass”类,而href有pageClass…在这个例子中我不需要它,但我可以想到可能的场景。是的,你可以使用任何定位器(例如class)定位div例如,
browser.div(:class=>'divclass').link(:class=>'pageClass')
。对于html示例,您可以使用
browser.div(:id=>'MyTabs').ul(class=>'Tabs').li(:class=>'pageTab',:text=>'Preferences')
。但是,为了减少脆弱性,您应该尽量少使用定位器。