我在项目中使用White UI自动化进行测试。我被困在需要获取控件的背景色的位置。请提供任何示例代码?

最佳答案

不幸的是,使用怀特可能无法做到这一点。但是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,那么很不幸。

希望这可以帮助!

07-26 04:04