Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何检查当我滚动时是否到达页面底部_Ruby_Selenium_Watir - Fatal编程技术网

Ruby 如何检查当我滚动时是否到达页面底部

Ruby 如何检查当我滚动时是否到达页面底部,ruby,selenium,watir,Ruby,Selenium,Watir,我必须截取整个页面的截图,但我无法成功完成(只有Firefox驱动程序支持截取完整的截图)。所以我想把页面分为上、中、下三个部分,并将其保存为三个屏幕截图,但这里的问题是,如果我写下面的代码 require 'watir' b=Watir::Browser.new b.scroll.to :top b.screenshot.save("top.png") b.scroll.to :center b.screenshot.save("center.png")

我必须截取整个页面的截图,但我无法成功完成(只有Firefox驱动程序支持截取完整的截图)。所以我想把页面分为上、中、下三个部分,并将其保存为三个屏幕截图,但这里的问题是,如果我写下面的代码

require 'watir'
b=Watir::Browser.new
b.scroll.to :top
b.screenshot.save("top.png")
b.scroll.to :center
b.screenshot.save("center.png")
b.scroll.to :bottom
b.screenshot.save("bottom.png")

不幸的是,不管页面是否需要滚动,上述代码都会截取三个屏幕截图。所以我的问题是,有没有办法知道页面是否已到达底部?

您可以获取元素的位置,尝试向下滚动查看元素位置是否已更改。如果没有,您可能处于“底部”,但有太多潜在的警告,这种情况将取决于上下文。

您可以获得窗口高度以及正文内容高度,以近似您需要的屏幕截图数量。我说“近似”,因为获取高度的方法有各种警告,例如处理滚动条。除非你真的需要像素完美的屏幕截图,否则这个近似值应该足够好了

# Determine how many screenshots are needed to get all of the content
window_height, content_height = b.execute_script('return [window.innerHeight, document.body.clientHeight];')
screenshot_pieces = content_height / window_height.to_f

# Always take a screenshot of the top
b.scroll.to :top
b.screenshot.save('top.png')

# If there are more than 2 pieces, take a screenshot of the center
if screenshot_pieces > 2 
  b.scroll.to :center
  b.screenshot.save('center.png')
end

# If there are more than 1 piece, take a screenshot of the bottom
if screenshot_pieces > 1
  b.scroll.to :bottom
  b.screenshot.save('bottom.png')
end

您可以根据自己的喜好调整上述条件。例如,如果您不希望屏幕截图有重叠部分(即不关心页面的小数部分),可以将条件分别更改为
screenshot\u pieces>=3
screenshot\u pieces>=2

这是一种额外的安装,但是,它可以给你一整页的Chrome屏幕截图。这真的解决了我的问题。非常感谢!这对我来说是行不通的,因为我设计了一个框架,在这个框架中,必须在页面末尾截图。将使用该框架的用户将只剩下这些屏幕截图。