首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IEDriverServer和裁剪截图的问题

IEDriverServer和裁剪截图的问题
EN

Stack Overflow用户
提问于 2014-08-05 11:47:32
回答 1查看 422关注 0票数 0

我正在使用Watir-WebDriver来运行我们的Rails应用程序的自动化测试,并在过去的几天里探讨了比较特定元素的截图的可能性。

我使用gem:watir-extensions-element-screenshot (这里)捕捉特定元素的屏幕截图。这个创业板捕获了整个页面的屏幕截图,然后对其进行裁剪,以筛选出所请求的元素。

这在Chrome和Firefox中都能很好的工作,但是引起了问题。当我运行自动化测试时,crop!函数抛出以下异常:

ChunkyPNG::OutOfBounds: Original image width is too small!

crop_width + x > widthcrop_width是要裁剪的元素的宽度,x是要裁剪的图像左上角的x坐标,width是原始图像的宽度时,就会引发此异常。

当我在测试期间打印一些值时,我确实可以确认上面的值:

crop_width: 940, crop_height: 562

x: 363, y: 211

width: 900, height: 520 #why are these so small?

当我手动捕获IRB中相同元素的屏幕截图时,它工作得很好:

irb(main):013:0> b = Watir::Browser.new :ie

=> #<Watir::Browser:0x422422cc url="http://localhost:5555/" title="WebDriver">

irb(main):014:0> b.goto 'localhost:3000'

irb(main):015:0> b.div(:id => 'lbcontent').screenshot('ie_test.png')

crop_width: 940, crop_height: 562

x: 371, y: 195

width: 1680, height: 909

=> #<File:ie_test.png (closed)>

所以很明显,IEDriverServer在捕捉屏幕截图时做了一些调整,但是在IRB中一切都很好。有人有解释和/或解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-06 04:10:20

问题

元素屏幕快照扩展首先使用Watir的内置方法获取浏览器窗口的屏幕快照:

代码语言:javascript
复制
browser.screenshot.save(file)

这里的问题是,您可以根据所使用的浏览器获得不同的图像大小:

  • 在Firefox中,屏幕截图将包括页面上的所有内容。这包括用户必须向下滚动或正确查看的页面部分。
  • 相比之下,Chrome和IE截图正是用户目前看到的。任何你必须滚动看到的东西都不会包含在图像中。这意味着图像大小将取决于浏览器窗口的尺寸。

最终,这意味着当您需要滚动到图像时,Chrome和IE将抛出此异常。例如,如果图像宽度为500,但浏览器宽度仅为250,则会出现异常。

解决方案

考虑到当浏览器窗口更大时没有问题,我建议在截取截图之前使浏览器最大化。

尝试:

代码语言:javascript
复制
b = Watir::Browser.new :ie
b.goto 'localhost:3000'
b.window.maximize                                       # Added line
b.div(:id => 'lbcontent').screenshot('ie_test.png')

请注意,如果图像仍在此区域之外,则仍然会出现问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25138061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档