如何使用watir滚动网页

amj*_*jad 13 ruby watir cucumber watir-webdriver

我正在尝试滚动网页以查找并单击滚动页面时延迟加载的内容.我正在使用以下命令

require 'watir-webdriver'

@browser = Watir::new :firefox
@browser.send_keys :space
Run Code Online (Sandbox Code Playgroud)

我正在使用firefox的web驱动程序,我在ubuntu上,但它无法正常工作.在下面的ruby代码中,我试图向下滚动页面,直到我找不到带有:id的元素.该元素懒洋洋地加载.我几秒后就会超时,不知道下面的代码有什么问题.

When /^deal (\d+) is loaded$/ do |id|
  (0..5).each do |click|    
    @browser.send_keys :space
  end
end
Run Code Online (Sandbox Code Playgroud)

使用watir-driver滚动页面的最佳方法是什么?

小智 20

如果您启用了JavaScript,则可以访问底层驱动程序并执行一些JavaScript以在页面上滚动.

@browser.driver.executeScript("window.scrollBy(0,200)")
Run Code Online (Sandbox Code Playgroud)

将沿y轴​​向下滚动页面200像素.

请参阅此处以获取该方法的文档:

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

  • 请注意,您无需访问驱动程序即可执行脚本.你可以这样做:`@ browser.execute_script("window.scrollBy(0,200)")`. (10认同)

小智 7

我使用名为“watir-scroll”的宝石来帮助我完成此操作。虽然它通常需要滚动到的地方,但它也会滚动到坐标。

https://github.com/p0deje/watir-scroll 自从 Watir v6.16 watir-scrollgem 合并到watir

您可以滚动到特定元素

button1 = @browser.input(:class => "mileage_rate")
@browser.scroll.to button1
Run Code Online (Sandbox Code Playgroud)

或者只是滚动到顶部中间或中心

@browser.scroll.to :top
@browser.scroll.to :center
@browser.scroll.to :bottom
Run Code Online (Sandbox Code Playgroud)

或者滚动到一个坐标

browser.scroll.to [0, 200]
Run Code Online (Sandbox Code Playgroud)

  • 它为 #<Watir::Browser:0x314d858> (NoMethodError) 提供了未定义的方法滚动 (3认同)