2012-05-01 107 views
-1

我試圖訪問一個div在李陣列訪問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 =」主題car_review「>汽車評論」等得到它的文本。 我特別使用該文本的原因是,根據文本是什麼進入特定的步驟。我使用

代碼是

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

劇本是前工作正常,突然它已經停止工作,只是沒能獲得股利(:類,「新聞項目」)。

該錯誤消息我得到的是

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

我試圖DIV(:類=> /新聞 - /),但它仍然只是沒能找到該元素

我很堅持! !

+0

1)你能給我們一個鏈接到你正在測試的頁面嗎?這可以幫助你輕鬆很多。 2)不要使用長鏈對象來找到你想要的東西,除非這是將它與頁面上的類似對象區分開來的唯一方法。如果在該頁面的其他地方找不到「主題汽車評論」類的div,只需簡單地使用它即可(如賈斯汀在他的回答中所示) 3)如果正在運行的事情現在被破壞,而您沒有做出任何改變,你可能需要非常仔細看看頁面的HTML,因爲問題可能在那裏發生變化,名稱或使用框架或類似的東西。 –

回答

1

我認爲當你在做li(:class => /views-row-#{x}/)時,x意味着你在迭代所有行?如果是這樣,那麼你的腳本將在row-2上失敗,因爲它不包含news-item div(導致你看到的錯誤)。

如果只有這些「話題car_review」 div標籤之一,你可以這樣做:

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

更新 - 遍歷每個L1:

如果您需要遍歷每個李,那麼你可以這樣做:

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

所有李元素都有新聞。只是我粘貼了只有1個元素的細節。 – NewTester

+0

我添加了如何迭代LI。如果這不起作用,那麼我會建議您使用完整的HTML示例和代碼來更新問題,以重現問題。除了通過已經列出的假設之外,我還沒有能夠重現您的問題。 –