我试图滚动网页找到并点击时,页面滚动是延迟加载内容。 我使用下面的命令
require 'watir-webdriver'
@browser = Watir::new :firefox
@browser.send_keys :space
我使用的网络驱动器与Firefox和我在Ubuntu,但它无法正常工作。 在下面的Ruby代码我试图滚动页面,直到我不觉得与元素:ID。 元素加载懒洋洋地。 我在几秒钟后收到超时,任何知道什么是错用下面的代码。
When /^deal (\d+) is loaded$/ do |id|
(0..5).each do |click|
@browser.send_keys :space
end
end
什么是使用的Watir驱动滚动页面的最佳方式?
如果您启用JavaScript,您可以访问底层驱动程序,并执行一些JavaScript来滚动页面。
@browser.driver.executeScript("window.scrollBy(0,200)")
会向下滚动沿y axix页面200个像素。
看到这里的方法的文档:
http://www.w3schools.com/jsref/met_win_scrollby.asp
我使用了一个名为“的Watir滚动”的宝石,以帮助我与此有关。 虽然它通常需要的地方滚动,它也将滚动到坐标。
https://github.com/p0deje/watir-scroll 由于的Watir v6.16 watir-scroll
宝石汇成watir
您可以滚动到特定元素
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;")