-1

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="topic car_review">車のレビュー」にアクセスして、そのテキストを取得しようとしています。私が特にそのテキストを使用している理由は、テキストが何であるかに応じて、特定のステップに入るからです。

私が使用しているコードは

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

スクリプトは以前は正常に動作していましたが、突然動作を停止し、div(:class,'news-item') を取得できなくなりました。

私が得るエラーメッセージは

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

div(:class => /news-/) を試しましたが、それでもその要素を見つけることができません

私は本当に立ち往生しています!!!

4

1 に答える 1

1

あなたがしているときli(:class => /views-row-#{x}/)、xはあなたがすべての行を反復していることを意味すると思いますか?row-2その場合、スクリプトにはdivが含まれていないため、スクリプトは失敗しますnews-item(結果としてエラーが表示されます)。

これらの'topiccar_review' divタグが1つしかない場合は、次のようにすることができます。

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

更新-各LIを反復処理します。

各LIを反復処理する必要がある場合は、次のようにすることができます。

@browser.lis.each do |li|
    @topic = li.div(:class, 'topic car_review').text
end
于 2012-05-01T13:15:28.723 に答える