我被要求在我们网站的JavaScript部分实施验证测试。我一直在考虑使用硒WebDriver。我们想要测试的一件事是用户界面:检查它是否“看起来很好”(必须对齐的东西是对齐的,框位于正确的位置)。验证测试:如何验证UI?
目前,我发现的唯一选择是使用Selenium拍摄快照,并将其与预先手动拍摄的测试快照进行比较,或手动检查快照。快照比较不可维护,因为布局中的任何更改都需要重新获取所有测试快照,而且手动检查非常耗时。
有没有人知道有任何方式(在硒或其他)来实现这一目标?
我被要求在我们网站的JavaScript部分实施验证测试。我一直在考虑使用硒WebDriver。我们想要测试的一件事是用户界面:检查它是否“看起来很好”(必须对齐的东西是对齐的,框位于正确的位置)。验证测试:如何验证UI?
目前,我发现的唯一选择是使用Selenium拍摄快照,并将其与预先手动拍摄的测试快照进行比较,或手动检查快照。快照比较不可维护,因为布局中的任何更改都需要重新获取所有测试快照,而且手动检查非常耗时。
有没有人知道有任何方式(在硒或其他)来实现这一目标?
这并不好,但它可以在一定程度上完成。
对于定位,可以使用WebElement的getLocation()
(Java doc,但所有Selenium绑定中都存在相同的方法)。请注意,大多数浏览器呈现的方式稍有不同,所以在使用较旧的IE时,不要指望事物像素完美。而且,当例如事物可能稍微有点不同时在CSS中定义的第一个字体没有找到,并使用替代方法。不要太依赖这种方法。但是如果你能够让你的测试变得健全并且你的环境保持稳定,那么它就会起作用。
对于对准,我写WebDriver
断言元素是目视内部另一元件的一个简单的Java方法。
应该没有错误的否定,但是当内部元素在视觉内部但是其(不可见的)实际边界“偷看”时可能会出现一些误报。然而,我并没有碰到这个问题,因为我的真实经历,因为漂亮的网站行为良好,不需要这样的黑客:)。尽管如此,这还不算什么,Selenium也不是为这类工作设计的,所以实施更复杂的检查可能会更困难。
public static void assertContains(WebElement outerElem, WebElement innerElem) {
// get borders of outer element
Point outerLoc = outerElem.getLocation();
Dimension outerDim = outerElem.getSize();
int outerLeftX = outerLoc.getX();
int outerRightX = outerLeftX + outerDim.getWidth();
int outerTopY = outerLoc.getY();
int outerBottomY = outerTopY + outerDim.getHeight();
// get borders of inner element
Point innerLoc = innerElem.getLocation();
Dimension innerDim = innerElem.getSize();
int innerLeftX = innerLoc.getX();
int innerRightX = innerLeftX + innerDim.getWidth();
int innerTopY = innerLoc.getY();
int innerBottomY = innerTopY + innerDim.getHeight();
// assures the inner borders don't cross the outer borders
final String errorMsg = "ughh, some error message";
final boolean contains = (outerLeftX <= innerLeftX)
&& (innerRightX <= outerRightX)
&& (outerTopY <= innerTopY)
&& (innerBottomY <= outerBottomY);
assertTrue(errorMsg, contains);
}
如果您使用术语验证的含义:“测试我们已经构建了正确的东西”,我会说这几乎不可能自动化。如果不是让一些人真正使用它,你会如何判断它看起来是否令人愉快或容易使用?
这种视觉检查也是人类擅长的。如果您在开发网站时一直使用网站,那么如果布局等有些可疑,您会很容易注意到。
对于功能自动化测试是个好主意。
我意识到电脑不是很擅长回答“它看起来很漂亮”的问题。但我希望能够定义一些规则(这和这应该是对齐的,等等),可以自动检查。我知道手动检查是最可靠的方法,但如果我们能够拯救自己,那会很棒:-) – Stilltorik
谢谢!我会测试一下。 – Stilltorik