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

Ruby 访问li元素数组中的div元素,ruby,watir,watir-webdriver,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"&g

我正在尝试访问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>
脚本之前工作正常,但突然停止工作,无法获取div(:class,'news-item')

我收到的错误消息是

unable to locate element, using {:class=>"news-item", :tag_name=>"div"} (Watir::Exception::UnknownObjectException)
我尝试了div(:class=>/news-/),但仍然无法找到该元素


我真的被卡住了

我假设当您执行
li(:class=>/views row-#{x}/)
时,x表示您正在迭代所有行?如果是这样,那么脚本将在
第2行
失败,因为它不包含
新闻项
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

所有的李元素都有新闻。只是我只粘贴了1个li元素的细节。我添加了如何在li上迭代。如果这不起作用,那么我建议您使用完整的HTML示例和再现问题的代码更新问题。除了做出已经列出的假设之外,我无法重现您的问题。1)您能给我们一个指向您正在测试的页面的链接吗?这会让你更容易得到帮助。2) 不要使用一长串的对象来找到你想要的东西,除非这是将它与页面上类似对象区分开来的唯一方法。如果在页面的其他地方找不到“topic car review”类的div,只需使用它(正如Justin在回答中所显示的)3)如果工作的东西现在坏了,而您没有做任何更改,您可能需要仔细查看页面HTML,因为问题可能在那里发生了更改,命名或使用框架或类似的东西。
@browser.lis.each do |li|
    @topic = li.div(:class, 'topic car_review').text
end