我正在尝试使用DOM检查器查找this page底部“更多”按钮的ID,以显示更多结果。
我正在尝试做类似这样的事情:
require 'watir-webdriver'
b = Watir::Browser.new
b.goto 'svpply.com/editors_pick'
#count products
puts b.elements(:xpath => '//li[@data-class="Product"]').count
#=> 30
#Now click button
show_all = b.button(:id => "btn_all")
show_all.click
sleep 4
#count products again
puts b.elements(:xpath => '//li[@data-class="Product"]').count
#=>60
但是,我不清楚如何在DOM结构中搜索特定的id。有人还可以解释属性,元素,ID和节点之间的区别吗?
答案 0 :(得分:2)
使用DOM Inspector进行更多按钮:
- >这应该显示页面的HTML,它将显示[更多]控件的详细信息。您会注意到该元素实际上是DIV而不是按钮。同样,ID的格式为“_more”。
所以要使用Quora页面做你的例子,你会做类似的事情:
require 'watir-webdriver'
class QuoraPage
def initialize(browser)
@browser = browser
end
def goto()
@browser.goto 'http://www.quora.com/Startups/best_questions'
wait_questions_loaded
end
def click_more()
@browser.div(:id, /_more/).click
wait_questions_loaded
end
def questions_count()
@browser.links(:class, 'question_link').count{ |x| x.visible? }
end
def wait_questions_loaded()
begin
questions_start_count = questions_count()
sleep(2)
end while questions_start_count != questions_count()
end
end
page = QuoraPage.new(Watir::Browser.new :chrome)
page.goto
puts page.questions_count
page.click_more
puts page.questions_count
请注意,我必须把睡眠放在其他webdriver挂起,就像anonygoose提到的那样。我尝试了不同的wait_untils,但没有设法找到有用的东西(除了睡眠不是很强大)。
关于节点,元素等问题。我认为您最好查看http://www.w3schools.com/dom/default.asp。
答案 1 :(得分:1)
要按下svpply上的按钮,您只需使用
即可b.button(:text => "Show All").click
可以使用
计算页面上显示的所有产品b.lis(:class => "grab large").count
这是svpply网站的全部内容。我根本无法让quora自动化,它只是无限期地停止了我的watir-webdriver。
您还需要等待才能计算产品。这可以通过以下方式完成:
b.wait_until{b.lis(:class => "grab large").count > 30}