微软不久前宣布,不赞成使用编码UI自动化-建议使用WinAppDriver替代Appium进行测试。
我计划展示为基本的DotNet Core应用程序开始使用Appium自动化的过程有多么容易。 由于以下原因,我们将使用python。
请从此处克隆git存储库,以配合本文。
使用Python?
为什么要使用python-我的应用程序在C#和Winforms(或WPF)中,并且有用于连接Appium的Nuget程序包。 这是一个正确的观点,我不会因为直接使用C#进行测试而犯错。 但是,代替使用python的一个有力论据是,构建自动化测试以运行它是不需要的步骤-您只需将脚本检入到存储库中并作为自动化过程签出/运行。
另外,python是一种具有出色交互外壳的解释型语言-人们可以同时编写和调试。 尽管有许多方法可以在调试过程中更改正在运行的.Net代码,但这不是很实用。
能够编写UI测试,设置断点(例如,使用python IDE,Visual Studio Code等),执行脚本; 并且一旦达到断点,就能够在外壳中运行任何其他python命令(UI元素查找,Assert或某种类型的调试转储)是无价的。
实际上,您可以无限期地搁置外壳,将Appium WebDriver实例保留在范围内,并以交互方式开发整个方案。 使用C#,这是开箱即用不可能的(无需编写自定义shell /交互式终端)...
入门
您将需要使用Windows 10并安装(或已经具备)以下先决条件:
- 打开Win10 Dev模式以使WinAppDriver起作用
- Python 3.7+ (3.8也可以)
- WinAppDriver
- 示例C#Winform App和python示例( 上 )
获取示例代码,并构建.Net Core Winform示例。 dotnet run只会启动应用程序以确保其已构建。 应用程序启动后,可以将其关闭-WinAppDriver将在自动化运行期间启动该应用程序。
git clone https://github.com/pjcast/apium_winform_samples.git
cd apium_winform_samples/winforms/basic/Basic
dotnet restore
dotnet build
dotnet run在单独的cmd提示符下启动Win App Driver(退出运行)
C:\ Program Files ( x86 )\ Windows Application Driver > WinAppDriver.exe
Windows Application Driver listening for requests at : http ://127.0.0.1:4723/
Press ENTER to exit .运行Python示例:
python basic_sample.py您应该看到示例应用程序启动,四处浏览,检查一些UI状态,然后键入一些字符,最后应用程序退出。
python \文件夹中的文件:
- basic.json-一个JSON文件容器,用于UI元素的各种定位器方法。 提供未在python脚本本身中进行硬编码的元素的结构。 而且,可以很容易地被许多python文件重用。
- appium_helpers.py-加载JSON文件,并将它们包装到动态python访问器类中。 提供直接获取UI元素或延迟get_wait()的方法。 通常,您需要等待UI可用。 其他时间,您希望它已经在那里。
- basic_sample.py-创建与winappdriver / appium的连接,并执行多个UI动作。
基本的示例应用程序和python脚本仅旨在快速介绍python提供的功能和可扩展性。 在创建一个很小的框架的同时,希望对您有用。
在时间允许的情况下,我们将寻求扩展示例并提供python包装器,以便与更复杂的Winform控件(例如DataGridViews)进行交互。 您的UI测试应尽可能精简,并以可重用的UI对象存储库(在这种情况下为JSON)和可重用的python UI包装器为基础。 您不想让代码在数十个不同的python脚本文件中的数据网格中选择X行,X列。
Win App Driver / Appium绝对是Codeed UI的受欢迎替代品。 任何人都可以轻松访问Appium-免费,开放源代码,并且在Microsoft的支持下(通过Win App Driver),绝对值得研究。 Microsoft开源了示例自动化测试和UI Recorder应用程序,这也很棒。 尽管记录器应用程序需要做一些工作,但源代码仍在改进中。
Windows Appium集成(WinAppDriver)中最重要的部分尚未开源。如果Microsoft开源了该代码,则社区成员可以对xpath查询性能和其他缺少的功能进行改进。
From: https://hackernoon.com/introduction-to-winforms-ui-automation-with-python-and-appium-tn2h24pe