簡體   English   中英

如何使用 watir 滾動網頁

[英]how to scroll a web page using watir

我正在嘗試滾動網頁以查找並單擊滾動頁面時延遲加載的內容。 我正在使用以下命令

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-driver 滾動頁面的最佳方式是什么?

如果啟用了 JavaScript,則可以訪問底層驅動程序並執行一些 JavaScript 以在頁面上滾動。

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

將沿 y 軸向下滾動頁面 200 像素。

有關該方法的文檔,請參見此處:

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

我使用一個名為“watir-scroll”的 gem 來幫助我。 雖然它通常需要滾動到位置,但它也會滾動到坐標。

https://github.com/p0deje/watir-scroll自 Watir v6.16 watir-scroll gem 合並到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]

這節省了我很多時間:

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

抱歉,我無法對最后一個答案發表評論,因為我是新來的,而且還沒有足夠的代表,所以我剛剛創建了一個新答案。 不管怎樣,如果有人在多次滾動時遇到問題,試試這個(添加一個循環並休眠):

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可能還需要調整到更大的像素量。

    300.times do
      @browser.driver.execute_script("window.scrollBy(0,200)")
      sleep 0.05
    end

您可以訪問底層驅動程序並執行一些 javascript。 例如,如果您想滾動到頁面底部,您將使用

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

它在 y 軸上滾動到頁面底部。

有用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM