我在我的项目中使用 White UI 自动化进行测试。我被困在需要获取控件背景颜色的地方。请问有示例代码吗?
3 回答
不幸的是,这可能是不可能使用白色的。但是,Windows 确实提供了一些您可以调用的方法,这些方法可能会对您有所帮助。如果您正在使用间谍工具并且您正在查看的控件具有可用的 TextPattern,则可以获取控件的背景颜色。
具体来说,您可以尝试获得这样的模式(其中 myElement 的类型为 AutomationElement):
var textPattern = myElement.GetCurrentPattern(TextPattern.Pattern) as TextPattern;
如果您能够获得 TextPattern 类型的实例,则可以执行以下操作:
var bgColor = textPattern.DocumentRange.GetAttributeValue(TextPattern.BackgroundColorAttribute)
这将返回一个普通的旧对象,然后您需要将其拆箱。如果有多种背景颜色,则等于TextPattern.MixedAttributeValue
. 否则它将是int
与 RGB 颜色相对应的多个类型,因此演员应该可以为您提供所需的值:
var color = (int) bgColor;
当然,如果您感兴趣的控件的 ControlType 不是 Text ,那么不幸的是您不走运。
希望这可以帮助!
如果您使用的是测试应用程序,您可以创建一个文本框并将文本框的文本绑定到控件的背景。然后您可以轻松地测试文本框的文本。
我猜 White UI 自动化没有这样的属性,但是您可以使用 .Net 库获得控件的矩形并识别颜色。
例如,当您输入错误的值时识别文本框中的红框,过程将如下:
- 使用 UI 自动化获取控件的矩形。
- 使用 .Net 库制作此矩形的屏幕截图。
- 使用 .Net 库遍历所有像素,并验证在这个矩形中我们有,例如,超过 30 个红色像素。
我知道这是蛮力的解决方案,但总比没有好。