Sikuli,Java& Selenium - 如何检测图像背景颜色变化?

时间:2017-03-22 14:58:29

标签: sikuli sikuli-script

将Sikuli(与Selenium结合使用)视为自动化UI测试中更多视觉元素的可能性,特别是在未应用预期品牌时可能出现的问题。

在我的测试中,我在紫色导航栏上有一个白色导航图标图像。我拿着一个白色图标的屏幕抓取坐在它的紫色背景上,并在Sikuli测试类中用作我的模式。如果我然后在我的网络应用程序中更改CSS,导航条为红色,我希望测试失败。

不幸的是,忽略了背景颜色更改,无论如何都会点击图标。如果我将模式的相似度值设置为1f(即精确匹配),则不会单击该图标。但是,如果我将导航栏颜色更改为正确的紫色,它也不会单击该图标,因此它与我用于该模式的图标屏幕截图相匹配。

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

这是对Sikuli能力的限制还是我错过了什么?

编辑:

所以我发现了THIS ANSWER一个类似的问题,它促使我检查在尝试将红色图案上的白色图标和紫色图案上的白色图标匹配到具有紫色品牌的网页时返回的分数。两者的得分都超过了0.9,与第二个小数点后面的差异有所不同,因此当我将模式的“相似”属性设置为0.9时,两者的匹配。

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

所以我的结论是匹配确实考虑了背景颜色,但如果您使用的大多数屏幕截图模式是相同的颜色,则得分的差异是微小的。

1 个答案:

答案 0 :(得分:0)

你可以直接绕过图标后面的背景并查看它的侧面吗?请原谅我缺乏编码知识,只是试图提出一个解决方法

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