有没有人尝试使用webdriver测试网站的页面布局?具体来说,请使用webelement.getPosition()和webelement.getDimension()。


这两种方法不足以测试页面的布局。我进行了快速测试,发现该位置将返回元素相对于页面左上角的位置。这意味着无论监视器分辨率或窗口大小如何,此值应始终返回相同的值。

如果我可以一次记录位置和元素尺寸并将这些值存储在某个地方,则可以使用硒运行自动测试,以查找元素的位置或尺寸是否发生了变化。如果该更改大于我设置的增量值,则表示元素的对齐方式已更改,我将无法通过测试。


我打算创建一些实用程序这样做,但是想确认这确实足以测试页面布局


#1 楼

作为简单地确保每次值都完全匹配的替代方法,您可以通过检查某些元素(例如某些元素不相交)或元素A始终在元素B之上等来创建更可靠的自动化方法。一些其他功能来测试这些东西。这将为您提供一些自动验证布局的功能,而又不会使它如此脆弱且无法跨浏览器运行,但是我仍然认为它不会代替页面的视觉验证。

评论


是。我同意这不会取代视觉验证。但是,如果网站中有很多页面,则具有这样的内容仍然会很好。

– A.J
2012年5月17日19:52

#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