有没有人尝试使用webdriver测试网站的页面布局?具体来说,请使用webelement.getPosition()和webelement.getDimension()。
这两种方法不足以测试页面的布局。我进行了快速测试,发现该位置将返回元素相对于页面左上角的位置。这意味着无论监视器分辨率或窗口大小如何,此值应始终返回相同的值。
如果我可以一次记录位置和元素尺寸并将这些值存储在某个地方,则可以使用硒运行自动测试,以查找元素的位置或尺寸是否发生了变化。如果该更改大于我设置的增量值,则表示元素的对齐方式已更改,我将无法通过测试。
我打算创建一些实用程序这样做,但是想确认这确实足以测试页面布局
#1 楼
作为简单地确保每次值都完全匹配的替代方法,您可以通过检查某些元素(例如某些元素不相交)或元素A始终在元素B之上等来创建更可靠的自动化方法。一些其他功能来测试这些东西。这将为您提供一些自动验证布局的功能,而又不会使它如此脆弱且无法跨浏览器运行,但是我仍然认为它不会代替页面的视觉验证。#2 楼
我不推荐这种方法。首先,它相当慢。您是否尝试过为页面上的每个元素调用您提到的方法?在类似Chrome或FF的浏览器中,大约需要190个元素(大约是我今天检查的时间)的6-10秒。此外,在IE上可能要花费1分钟以上的时间。另一件事是管理这些存储的值。如果要手动定义要为其检查这些值的每个元素-这将需要大量工作,而且容易受到对该页面所做的任何更改的影响。因此,我假设您会自动获取并保存所有元素的值。但是我不确定findElements函数是否总是以相同的顺序返回元素。您需要检查一下。
我宁愿建议使用网络驱动程序截屏。您可以拍摄屏幕截图并将其另存为参考图案。然后,在下一个测试期间,您将截取另一个屏幕截图,并将其与保存的模式进行比较。在我们公司中,我们使用ImageMagick,对此我们感到满意。这是开源解决方案。我们只需从Java程序中运行可执行文件(包中包含compare.exe)即可。还有其他库。它不能消除我上面提到的问题(仍然很容易受到任何更改的影响),但是它更易于实现并提供更多的覆盖范围。布局测试。基本上可以,如果:很容易)
页面上没有使用javascript放置/调整大小/移动的任何元素
评论
正在处理的应用程序具有许多动态内容。因此,屏幕截图比较无法正常工作。我现在只担心图像的占位符是否始终显示在正确的位置。里面有什么-现在很难测试。主要是因为我没有预期的结果。
– A.J
2012年5月16日20:42
如果更改内容不会更改页面元素的位置,而您只是在检查图像是否到位,那么您的方法就可以了。
– JacekM
2012年5月16日22:51
// @ JacekM:我正想做些事,就像您刚才提到的使用ImageMagick一样。同样,一旦您比较了屏幕截图,compare.exe是否会得出图像的差异并显示出来?
–user4495
2012年12月6日在20:45
#3 楼
通常,最好通过手动测试来测试页面布局和浏览器兼容性。 Selenium旨在测试您网站的功能。您建议使用webelement.getPosition()
和webelement.getDimension()
方法来测试布局的建议不太可能起作用,因为在大多数HTML页面中,仅调整页面大小即可移动页面上的大多数元素。相反,我建议您目视检查每个页面每个发行版之前的网站。如果必须支持多个Web浏览器,则需要在多个Web浏览器中进行手动测试。 #4 楼
如果这是针对Java [和Selenium 2]的,那么为什么不使用Fighting Layout Bugs项目呢?添加依赖项,您可以创建这样的测试: />
#5 楼
检查此工具TestComplete
http://smartbear.com/products/qa-tools/automated-testing-tools
它可以保存测试执行期间的屏幕截图
观看Web测试视频5:27以了解其工作方式
也许选择其他工具将是最好的选择
还有更多包含教程的视频可用
评论
嗨,亚洲,欢迎来到sqa.stackexchange。该答案无济于事,因为它与使用webdriver有关。问题不是要使用其他工具来解决问题。
–布鲁斯·麦克劳德(Bruce McLeod)
2012年5月22日,2:19
评论
是。我同意这不会取代视觉验证。但是,如果网站中有很多页面,则具有这样的内容仍然会很好。
– A.J
2012年5月17日19:52