zoukankan      html  css  js  c++  java
  • C#中使用FlaUI进行Windows应用程序自动化及自动测试

    FlaUI 是Roemer 开发的自动化框架,前身是TestStack.White,为了提供一个非常干净和现代的代码库,重新写了FlaUI以便于轻松进行协作和进一步开发。

    FlaUI是一个.NET库,可帮助自动测试Windows应用程序(Win32,WinForms,WPF,Store Apps等)。它基于Microsoft的本机UI自动化库,因此是围绕它们的包装。FlaUI几乎包装了UI自动化库中的所有内容,还提供了本机对象,以防万一有人有特殊需求而FlaUI还没有解决。

    在此只是进行如何使用的介绍,达到抛砖引玉的效果。

    FlaUI的安装:
    在Visual Studio中创建一个新项目
    右键单击项目,然后选择“管理NuGet软件包”(使用NuGet软件包管理器)
    选择“浏览”选项卡并搜索FlaUI,它将显示FlaUI库。
    从NuGet软件包管理器安装以下库 FLAui.core,Flaui.uia2,Flaui.uia3。
    当然下载的库仅限于此项目,并非对所有项目都有用。

    如何使用FlaUI启动应用程序:
    要开始测试,应从FlaUI.Core库中提供的“ Application”类中实现静态方法“ Launch”。
    应将应用程序路径(已安装在计算机中且要自动化的应用程序)作为参数传递给Launch方法,如以下示例所示。
    var application = Application.Launch(@"C:ProgramFilesMicrosoft OfficeOffice16WINWORD.EXE");//这里的字符串是要进行自动化测试的软件路径,通过launch启动软件
    var automation = new UIA3Automation();//指定用于自动化库类型UIA3
    var mainWindow = application.GetMainWindow(automation);//应用程序实例来获取主窗口实例。
    在应用程序中搜索元素:
    要在应用程序中查找元素,我们需要指定AutomationElement的TreeScope。
    我们可以通过ConditionFactory,ControlType和要执行的操作(如以下示例中所述)类的条件来指定AutomationElement。
    ConditionFactory cf = new ConditionFactory(new UIA3PropertyLibrary());
    mainWindow.FindFirstDescendant(cf.ByName("Text Editor")).AsTextBox().Enter("FlaUI Tutorial");
    第一行 创建“ ConditionFactory”实例,“ ConditionFactory”是“ FlaUI.Core”中的类,“ ConditionFactory”根据条件标识元素。

    第二行 指定自动化元素 TreeScope 的FindFirstDescendant(),ConditionFactory 的ByName(),ControlType 的AsTextBox()和它的动作Enter()。

    上面内容可以安装FLaUI并运行指定应用程序,可以使用inspect工具或UISpy检查元素。个人觉得inspect更好用些。前面两者使用众多,可以百度相关资料,还有Flauinspect 这个工具,其效果也不错,在这里简单介绍下:

    Flauinspect 有三种检查元素的方法,打开【Flauinspect】 转到 【模式】

    悬停模式(按Ctrl并将鼠标指针移到目标元素上)
    焦点追踪()
    显示XPATH(与上面列出的任何模式结合使用),它将仅显示绝对XPath。
    使用FlaUI捕获屏幕截图:
    Flaui为屏幕截图提供了“ Capture”类

    Capture.screen();//捕获全屏
    Capture.Element("That Element ");//捕获特定元素
    Capture.Rectangle("Specify the height, width and length")
    //捕获在参数中指定的特征块
    可以使用以下代码行将屏幕快照存储在文件中:

    var image = Capture.Screen();
    image.ApplyOverlays(new MouseOverlay(image.DesktopBounds));
    image.ToFile(@"c: empscreen.png");
    ToFile(“ 路径文件名”)方法可用于将屏幕快照存储在用户指定的位置。

    使用FlaUI执行鼠标动作
    Flaui为Mouse类提供了以下不同方法:

    1. 鼠标左键单击

    Mouse.LeftClick();
    //左键单击当前指向的鼠标指针。
    2. 鼠标位置

    Point point = new Point(2435, 234 )
    //鼠标指针的位置x:2435,y:234
    3. 鼠标中键

    Mouse.Click(MouseButton.Middle, point);
    4. MoveTo 、MoveBy 及位置

    Mouse.MoveTo(point)
    // 鼠标指针定位到point这个点
    Mouse.MoveBy(point)
    // 将鼠标拖动到指定的位置。
    Mouse.Position(point)
    // 鼠标指针的轨迹不会显示。
    5. 滚动

    Mouse.Scroll(10)
    Mouse.HorizontalScroll(40);
    Mouse.VerticalScroll(30);
    // 正值向上滚动; 负值向下滚动
    使用FlaUI执行键盘操作
    为了通过键盘执行应用程序的任何操作,FlaUI为Keyboard类提供了以下方法:

    Keyboard.Type("Hello Flaui"); // 键盘输入字符串
    Keyboard.Type(VirtualKeyShort.Key_B, VirtualKeyShort.Key_C);
    //键入B后键入C
    Keyboard.Press(VirtualKeyShort.BACK) // 键入backspace键

    //用于多个组合键 (按下某个键、释放某个键 )
    Keyboard.Pressing(VirtualKeyShort.CONTROL);
    Keyboard.Press(VirtualKeyShort.Key_A);
    Keyboard.Release(VirtualKeyShort.CONTROL);

    //组合键的另一种方式
    Keyboard.TypeSimultaneously(VirtualKeyShort.CONTROL,VirtualKeyShort.KEY_A);
    VirtualKeyShort在“ FlaUI.Core.WindowsAPI”包中。

    如何在FlaUI中突出显示元素:
    Flaui提供了“ DrawHighlight”方法,该方法将突出显示AutomationElement。

    Automation_Element.DrawHighlight();
    简单的方法示例,如想深入了解可以查看Roemer源码https://github.com/FlaUI/FlaUI。
    ————————————————
    版权声明:本文为CSDN博主「levitate」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/levitate/article/details/108881189

  • 相关阅读:
    Gitlab 11.0.3配置LDAP
    IntelliJ IDEA快速创建属性字段的get和set方法
    解决Maven引用POI的依赖,XSSFWorkbook依旧无法使用的问题
    解决方案看起来是受源代码管理,但无法找到它的绑定信息。保存解决方案的源代码管理设置的MSSCCPRJ.SCC文件或其他项可能己被删除。
    IntelliJ IDEA开发工具println报错的解决方法
    Eclipse开发工具printf打印方法提示报错的解决方法
    Java基础学习总结一(Java语言发展历史、JDK下载安装以及配置环境变量)
    浅谈JavaScript之function用括号包起来
    讲解JavaScript两个圆括号、自调用和闭包函数
    Visual Studio Code使用Open In Browser打开的是记事本
  • 原文地址:https://www.cnblogs.com/lhxsoft/p/15152197.html
Copyright © 2011-2022 走看看