如何使用的Watir滚动网页(how to scroll a web page using wati

2019-08-03 07:04发布

我试图滚动网页找到并点击时,页面滚动是延迟加载内容。 我使用下面的命令

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驱动滚动页面的最佳方式?

Answer 1:

如果您启用JavaScript,您可以访问底层驱动程序,并执行一些JavaScript来滚动页面。

@browser.driver.executeScript("window.scrollBy(0,200)")

会向下滚动沿y axix页面200个像素。

看到这里的方法的文档:

http://www.w3schools.com/jsref/met_win_scrollby.asp



Answer 2:

我使用了一个名为“的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]


Answer 3:

对不起,因为我是新来的,没有足够的代表点还没有,所以我刚刚创建了一个新的答案,我不能在最后的答案发表评论。 不管怎么说,如果有人正在和滚动问题多次尝试这种(添加循环和睡眠):

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可能还需要进行调整,以一个较大的像素量。



Answer 4:

这救了我大量的时间:

browser.div(:id => 'start-date-holder').wd.location_once_scrolled_into_view 


Answer 5:

您可以访问底层驱动程序,并执行一些JavaScript。 例如,如果你想滚动到你可以使用页面底部

@browser.driver.execute_script( "window.scrollBy(0,document.body.scrollHeight)" )  

其中滚动页面上的y轴的底部。



Answer 6:

有用

evaluate_script("document.getElementsByTagName('body')[0].scrollTop=0;")


文章来源: how to scroll a web page using watir