UI自动化:将自动化元素保存为图像?

时间:2016-07-01 10:37:36

标签: c# wpf ui-automation coded-ui-tests

我有一个用例如下,

    Process proc = Process.Start("myproc.exe");
    AutomationElement automationElement = AutomationElement.RootElement.FindFirst(TreeScope.Children,
                new System.Windows.Automation.PropertyCondition(AutomationElement.ProcessIdProperty,
                    proc.Id));
    var imageAutomationElmt = automationElement .FindFirst
            (TreeScope.Descendants, new System.Windows.Automation.PropertyCondition
                (AutomationElement.AutomationIdProperty, "imageData"));

上面的代码从我的UI中获取了imageData。有没有办法将imageData(“Image”类型)保存为文件。我尝试使用屏幕捕获方法,但由于我的应用程序启用了滚动条,拍摄屏幕截图无法正常工作。

有没有办法将图像数据从图像的自动化元素保存到文件? TIA。

1 个答案:

答案 0 :(得分:1)

如果您将使用TestStack.White,您可以使用Image类来获取图像字节,VisibleImage属性返回Bitmap对象然后您可以使用ImageConverter将位图转换为字节数组,然后使用简单的File.IO和方法WriteAllBytes可以将图像保存到文件中。

       var visibleImage = ChangeIcon.VisibleImage;

        ImageConverter imgConverter = new ImageConverter();
        var bytes =  (byte[])imgConverter.ConvertTo(visibleImage, typeof(byte[]));            

        File.WriteAllBytes($"icon_{new Random().Next()}.bmp", bytes);            

(ChangeIcon属性类型为Image)