我正在使用Watir-WebDriver来运行我们的Rails应用程序的自动化测试,并在过去的几天里探讨了比较特定元素的截图的可能性。
我使用gem:watir-extensions-element-screenshot (这里)捕捉特定元素的屏幕截图。这个创业板捕获了整个页面的屏幕截图,然后对其进行裁剪,以筛选出所请求的元素。
这在Chrome和Firefox中都能很好的工作,但是引起了问题。当我运行自动化测试时,crop!函数抛出以下异常:
ChunkyPNG::OutOfBounds: Original image width is too small!
当crop_width + x > width中crop_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中一切都很好。有人有解释和/或解决办法吗?
发布于 2014-08-06 04:10:20
问题
元素屏幕快照扩展首先使用Watir的内置方法获取浏览器窗口的屏幕快照:
browser.screenshot.save(file)这里的问题是,您可以根据所使用的浏览器获得不同的图像大小:
最终,这意味着当您需要滚动到图像时,Chrome和IE将抛出此异常。例如,如果图像宽度为500,但浏览器宽度仅为250,则会出现异常。
解决方案
考虑到当浏览器窗口更大时没有问题,我建议在截取截图之前使浏览器最大化。
尝试:
b = Watir::Browser.new :ie
b.goto 'localhost:3000'
b.window.maximize # Added line
b.div(:id => 'lbcontent').screenshot('ie_test.png')请注意,如果图像仍在此区域之外,则仍然会出现问题。
https://stackoverflow.com/questions/25138061
复制相似问题