如何使用watir滚动网页
我正在尝试滚动网页以查找并单击滚动页面时延迟加载的内容。 我正在使用以下命令
require 'watir-webdriver' @browser = Watir::new :firefox @browser.send_keys :space
我正在使用firefox的web驱动程序,我在ubuntu但它不工作。 在下面的ruby代码中,我试图向下滚动页面,直到我找不到带有:id的元素。 该元素懒洋洋地加载。 我几秒后就会超时,不知道下面的代码有什么问题。
When /^deal (\d+) is loaded$/ do |id| (0..5).each do |click| @browser.send_keys :space end end
使用watir-driver滚动页面的最佳方法是什么?
如果您启用了JavaScript,则可以访问底层驱动程序并执行一些JavaScript以在页面上滚动。
@browser.driver.executeScript("window.scrollBy(0,200)")
将沿y轴向下滚动页面200像素。
请参阅此处以获取该方法的文档:
我使用一个名为“watir-scroll”的gem来帮助我。 虽然它通常需要滚动的位置,但它也会滚动到坐标。
https://github.com/p0deje/watir-scroll
您可以滚动到特定元素
button1 = @browser.input(:class => "mileage_rate") @browser.scroll.to button1
或者只是滚动到顶部中间或中心
@browser.scroll.to :top @browser.scroll.to :center @browser.scroll.to :bottom
或者滚动到坐标
browser.scroll.to [0, 200]
对不起,我不能评论最后的答案,因为我是新来的,还没有足够的代表,所以我刚刚创建了一个新的答案。 无论如何,如果有人多次滚动问题,试试这个(添加一个循环和睡眠):
maximum_times_needed = max # of times you need the page to scroll down maximum_times_needed.each do @browser.driver.executeScript("window.scrollBy(0,200)") sleep 0.15 end
0.15
可能会有所不同,具体取决于页面加载所需的时间。 0.15
是0.15秒,因此根据需要进行调整,以便有足够的时间加载页面。 200也可能需要调整到更大的像素量。
这为我节省了很多时间:
browser.div(:id => 'start-date-holder').wd.location_once_scrolled_into_view
您可以访问底层驱动程序并执行一些JavaScript。 例如,如果您想滚动到您将使用的页面底部
@browser.driver.execute_script( "window.scrollBy(0,document.body.scrollHeight)" )
在y轴上滚动到页面底部。
有用
evaluate_script("document.getElementsByTagName('body')[0].scrollTop=0;")