我正在尝试访问顺序元素,并且不知道如何在页面上推进脚本。所以,这是一段代码。
<div class="card highlighted">
<div class="card-fix">
<a class="card-remove icon" title="Don't show member again" onclick="$jq( '#search-results' ).msg( 'remove', this )" data-userid="93872246">
X
</a>
<dl></dl>
<div class="card-actions">
<a class="quickview" title="Quick view" onclick="$jq('#dialog-profile').msg('show', '/profileinfo/SearchProfi…lTseEdmEQ==&lid=1&searchType=S&pageNumber=1'); return false;" href="#"></a>
<a class="button button-primary" title="Favorite her!" href="/matchbook/addEntry.aspx?uid=Mu/BwYPn0nxhWlTseEdmEQ==&pn=1&rn=4&tp=S&handle=Annie5170&lid=1065"></a>
</div>
</div>
<div class="card-fix">
<a class="card-remove icon" title="Don't show member again" onclick="$jq( '#search-results' ).msg( 'remove', this )" data-userid="108272583"></a>
<dl></dl>
<div class="card-actions">
<a class="quickview" title="Quick view" onclick="$jq('#dialog-profile').msg('show', '/profileinfo/SearchProfi…DA3R3daaQ==&lid=1&searchType=S&pageNumber=1'); return false;" href="#"></a>
<a class="button button-primary" title="Favorite her!" href="/matchbook/addEntry.aspx?uid=y98x/Mj+hc+61DA3R3daaQ==&pn=1&rn=4&tp=S&handle=dancer4498&lid=1065"></a>
</div>
</div>
换句话说,我需要继续循环浏览这些快速浏览,然后运行一个小脚本并再次完成所有操作。然后转到下一页再做一次......等等。但是,如果我现在在循环中使用它,它将只获取第一次快速视图5次。
# 5.times do |n|
# browser.link(:title => 'Quick view').click
# sleep (2)
# browser.link(:class => "icon dialog-abandon").click
# # sleep (2)
# end
所以我的问题是如何通过所有快速视图推进它,每页有18个。
能够保存它也很棒
data-user-id="93872246"
和href中句柄后的部分,即。
handle=Annie5710
也可以在哈希的文件中。
谢谢,我感谢所有的帮助。
答案 0 :(得分:1)
你必须这样做:
//get total title in a page
totalTitleSize=browser.link(:title => 'Quick view').size
并循环播放:
totalTitleSize.times do |n|
browser.link(:title => 'Quick view', :index=> n).click
sleep (2)
//test it or use index in it If you need
browser.link(:class => "icon dialog-abandon").click
sleep (2)
end
答案 1 :(得分:0)
这应该添加到代码中。
browser.link(:title => 'Quick view', :index=> n).click
现在一切正常。
答案 2 :(得分:0)
正如其他答案所示,问题在于:
browser.link(:title => 'Quick view').click
将始终单击第一个匹配的链接。使用:index允许您覆盖默认的第一个匹配。但是,我认为更好的解决方案是获取匹配链接的集合并迭代它。它将使您免于手动处理索引。
browser.links(:title => 'Quick view').each do |link|
link.click
sleep (2)
browser.link(:class => "icon dialog-abandon").click
sleep (2)
end
请注意,我们已使用links
创建了一个集合,我们使用each
进行迭代。
但是,由于您还想收集其他数据,您可能希望遍历父div:
browser.divs(:class => 'card-fix').each do |parent_div|
puts parent_div.link(:class => 'card-remove').data_userid
#=> "93872246"
href = parent_div.button(:class => 'button-primary').href
puts href[/handle=([^&]+)/, 1]
#=> "Annie5170"
parent_div.link(:class => "quickview").click
sleep (2)
browser.link(:class => "icon dialog-abandon").click
sleep (2)
end