我對Ruby和Selenium很新。使用Ruby和Selenium Webdriver find_elements根據條件選擇並單擊特定鏈接
我正在嘗試編寫一個腳本來打開網頁(不是我運行的頁面),查看那裏的項目列表,然後單擊符合特定條件的項目的「詳細信息」鏈接。頁面的一個非常精簡的版本是:
<div class="list">
<div class="item">
<div class="description">Cat</div>
<div class="price">$3.00</div>
<div class="detailslink">
<a href="http://a.htm">Details</a>
</div>
</div>
<div class="item">
<div class="description">Dog</div>
<div class="price">$4.00</div>
<div class="detailslink">
<a href="http://b.htm">Details</a>
</div>
</div>
<div class="item">
<div class="description">Cat</div>
<div class="price">$4.00</div>
<div class="detailslink">
<a href="http://c.htm">Details</a>
</div>
</div>
<div class="item">
<div class="description">Bird</div>
<div class="price">$3.00</div>
<div class="detailslink">
<a href="http://d.htm">Details</a>
</div>
</div>
的我想要做什麼的一個例子是點擊「詳細信息」鏈接,最昂貴的動物是不是狗。我猜測我會創建一個包含find_elements的所有「item」類元素的數組,其中不包含單詞「dog」,找到該數組中最高價格的索引,然後單擊相應的「detailslink 「,但我不知道如何用Ruby寫出來。
理想情況下,如果沒有符合條件的列表項(「列表」div中沒有「item」div,或者所有「list」div都包含Cat),它也會每30秒刷新一次。這是我到目前爲止(我知道它是缺少很多!):
require "selenium-webdriver"
browser = Selenium::WebDriver.for :chrome
browser.get "http://list.htm"
for i in 0..1
items = browser.find_elements(:class=>"item")
#Do testing here. If there are non-cats, get the index of the max.
break
end
sleep(30)
browser.get "http://list.htm"
redo
end
#find the nth element based on the test above
browser.find_element(:class, "detailslink")[index].click
任何幫助將不勝感激!
'while..end'是好招..我喜歡它.. –
這完美地工作!非常感謝。 – user3507629