2013-08-14 3 views
0

В тесте огурца мне нужно выбрать href на моей странице, у которого нет атрибута id. Часть 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> 

Мне нужно получить ссылку элемент, относящийся к «Preferences», но я не уверен, как лучше, чтобы получить его через link(:how_do_I_get_this_stuff ...

ответ

1

Это действительно зависит от того, что уникально в ссылке. Однако, исходя из предоставленного html, может работать следующее.

Получить ссылку на основе текста:

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

Получить ссылку на основе HREF атрибута:

browser.link(:href => /the\/Preferences/).exists? 

Если имеется несколько ссылок с текстом Preferences, вы могли бы область видимости поиска в конкретный div, который должен быть уникальным, так как он имеет идентификатор:

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

Спасибо, это очень полезно. Есть ли способ запросить/развернуть по классам CSS? Так, например, если родительский div имел класс «divclass», тогда как href имеет pageClass ... Мне не нужен он в этом экземпляре, но я могу думать о сценариях, где мог бы. – larryq

+0

Да, вы можете найти div, используя любой из локаторов (например, класс). Например, 'browser.div (: class => 'divclass'). Link (: class => 'pageClass')'. Для вашего примера html вы могли бы сделать «browser.div (: id =>« MyTabs »). Ul (class => 'Tabs'). Li (: class => 'pageTab',: text => 'Preferences') '. Однако, чтобы уменьшить хрупкость, вы должны стараться использовать как можно меньше локаторов. –

Смежные вопросы