use*_*629 3 html ruby selenium selenium-webdriver
我对 Ruby 和 Selenium 很陌生。
我正在尝试编写一个脚本来打开一个网页(不是我运行的页面),查看那里的项目列表,然后单击满足特定条件的项目的“详细信息”链接。该页面的一个非常精简的版本是:
<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>
Run Code Online (Sandbox Code Playgroud)
我想要做的一个例子是点击“详细信息”链接,找到不是狗的最昂贵的动物。我猜我会创建一个包含所有“item”类元素的数组,其中 find_elements 不包含单词“dog”,找到该数组中最高价格的索引,然后单击相应“detailslink”中的链接",但我不知道如何用 Ruby 写出来。
理想情况下,如果没有符合条件的列表项(“列表”div 中没有“项”div,或者所有“列表”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
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
小智 5
对于我们这些使用 Ruby 的人来说,find_element 和 find_elements 的使用有一个不错的表。
https://gist.github.com/huangzhichong/3284966#file-selenium-webdriver-cheatsheet-md
| 归档时间: |
|
| 查看次数: |
14702 次 |
| 最近记录: |