访问li元素数组中的div元素

时间:2012-05-01 12:43:55

标签: ruby watir watir-webdriver

我正在尝试访问li数组中的div

<ul>
<li class="views-row views-row-1 views-row-odd views-row-first">
 <div class="news-item">
</li>
<li class="views-row views-row-2 views-row-even">
<li class="views-row views-row-3 views-row-odd">
 <div class="news-item">
  <div class="image">
  <div class="details with-image">
    <h2>
    <p class="standfirst">The best two-seat </p>
  <div class="meta">
    <div class="pub-date">26 April 2012</div>
    <div class="topic-bar clearfix">
       <div class="topic car_review">review</div>
</div>
</div>
</div>
</div>
</li>

我正在尝试访问&#34; div class =&#34;主题car_review&#34;&gt;汽车评论&#34;并获取其文字。 我专门使用该文本的原因是,根据文本的不同,它会输入特定的步骤。

我正在使用的代码是

@topic = @browser.li(:class => /views-row-#{x}/).div(:class,'news-item').div(:class,'details').div(:class,'meta').div(:class,/topic /).text

该脚本之前工作正常并且突然停止工作并且无法获得div(:class,&#39; news-item&#39;)。

我收到的错误消息是

unable to locate element, using {:class=>"news-item", :tag_name=>"div"} (Watir::Exception::UnknownObjectException)

我尝试了div(:class =&gt; / news- /),但仍然无法找到该元素

我真的被困了!!!

1 个答案:

答案 0 :(得分:1)

我假设当你在做li(:class => /views-row-#{x}/)时,x意味着你在迭代所有行?如果是这样,那么您的脚本将在row-2上失败,因为它不包含news-item div(导致您看到的错误)。

如果这些'topic car_review'div标签只有一个,你可以这样做:

@topic = @browser.div(:class, 'topic car_review')

更新 - 迭代每个LI:

如果你需要遍历每个LI,那么你可以这样做:

@browser.lis.each do |li|
    @topic = li.div(:class, 'topic car_review').text
end