2017-03-22 105 views
2

看着Sikuli(与硒一起)作为我们的自动化UI测试的更多的视觉元素,在不施加预期的品牌,可能突然出现特殊问题的可能性。Sikuli,Java&Selenium - 如何检测图像背景颜色变化?

在我的测试中,我有一个坐在紫色导航栏上的白色导航图标图像。我在屏幕上抓住了紫色背景上的白色图标,并将其用作Sikuli测试课程中的模板。如果我然后更改我的Web应用程序中的CSS,以便导航栏显示红色,我希望测试失败。

不幸的是,背景颜色的变化被忽略,无论点击图标。如果我将模式的相似度值设置为1f(即完全匹配),则不会单击该图标。但是,如果我将导航栏颜色更改为正确的紫色,它也不会单击该图标,以便它与我用于该模式的图标截图相匹配。

任何从0到0.9的“类似”参数值均可让测试再次通过,无论导航栏的颜色如何。

这是Sikuli能力的限制还是我错过了某些东西?

编辑:

所以我发现THIS ANSWER到类似的问题,它促使我检查评分试图匹配红色图案的白色图标和网页其中有白色的图标上紫纹时返回紫色的品牌。两者的得分超过0.9,具有约小数点后第二位的差值以后,的因此匹配既当我设置的图案的“相似的”属性〜0.9。

它促使我尝试增加屏幕截图的面积以包含更多相对于图标大小的背景。这导致紫色图案上的白色分数为0.9x,红色图案上的白色分数为0.7x。

所以我的结论是,匹配不考虑背景颜色,但如果大部分正在使用的截图模式是相同的颜色,在得分差极小。

回答

0

你能直接绕过背景后面的图标,并期待它的一面呢?请原谅我缺乏编码知识只是想帮助想出了一个变通

exists (icon): 
    if exists(whitebg): #capture a small area with just the color near the icon 
     pass 
    if exists(redbg): 
     fail