白色UI自动化框架:背景颜色

3

我在我的项目中使用白色UI自动化进行测试。 我卡在了一个点上,需要获取控件的背景颜色。 请提供任何示例代码?

3个回答

2
很遗憾,使用White可能无法实现此操作。但是,Windows提供了一些可调用的方法,可能会对您有所帮助。如果您正在使用间谍工具,并且您查看的控件具有TextPattern,则可以获取控件的背景颜色。
具体来说,您可以尝试获取以下模式(其中myElement的类型为AutomationElement): var textPattern = myElement.GetCurrentPattern(TextPattern.Pattern) as TextPattern; 如果您能够获取TextPattern类型的实例,则可以执行以下操作: var bgColor = textPattern.DocumentRange.GetAttributeValue(TextPattern.BackgroundColorAttribute) 这将返回一个普通的对象,然后需要进行拆箱操作。如果存在多个背景颜色,则等于TextPattern.MixedAttributeValue。否则,它将是与RGB颜色相对应的int类型的数字,因此进行强制转换即可获得所需的值: var color = (int) bgColor; 当然,如果您感兴趣的控件的ControlType不是Text,则很遗憾无法实现此操作。
希望这可以帮到您!

我正在尝试这种方法,看看它是否与FlaUI兼容。 - Apoorv
我使用了FlaUI,我可以看到我的控件支持TextPattern。 - Apoorv

1
如果您正在使用测试应用程序,可以创建一个文本框并将文本框的文本绑定到控件的背景。然后您可以轻松测试文本框的文本。

0

我猜白盒UI自动化没有这样的属性,但是您可以使用.Net库获取控件的矩形并识别颜色。


例如,对于在文本框中输入错误值时识别红色框架的情况,处理过程如下:
  1. 使用UI自动化获取控件的矩形。
  2. 使用.Net库对此矩形进行截屏。
  3. 使用.Net库遍历所有像素,并验证在该矩形中是否有超过30个红色像素。

我知道这是一种暴力解决方案,但总比没有好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接