Windows App 自动化测试-WinAppDriver-Appium 资料整理


最近负责项目组Windows App自动化测试框架搭建工作,在这里简单地把这个过程中参考的资料整理起来,仅仅是搬运工,感谢大牛们分享的资料。 同时也记下自己遇到的一些问题和解决办法。

Windows App 自动化工具选取

11种免费Window App自动化工具介绍(英文版): https://testguild.com/automation-tools-desktop/

9种 https://www.logigear.com/blog/test-automation/12-best-automation-tools-for-desktop-apps-in-2020/

12 种 https://blog.testproject.io/2016/12/22/9-free-desktop-test-automation-tools/

 

因为我所做项目测试的APP是部署在server端,需要在测试机上远程访问server,这方面对工具的选取有很大限制, 所以我选了集成在Appium里的WinAppDriver,因为可以用到Appium的远程访问功能。 个人觉得如果用Microsoft UI automation会方便些,它里面定义了各种各样的控件(Button, TreetMenu等),基本上直接调用现成的接口就可以了,不需要花太多精力做二次开发,但它不能远程访问。用WinAppDriver需要二次开发,大部控件都要自己定义,需要编码能力。我花了很多时间去调查是否可以Mirosoft UI automation和Appium结合起来用, 但是没有找到方法, 如果有朋友有找到合适的方法,欢迎一起探讨。

 

Mirosoft UI automation

 

花了一些时间研究Mirosoft UI automation, 这里顺带把之前参考资料列出来

 

1.      官网介绍: https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-fundamentals

 

2.      详细说明和例子

 

https://docs.microsoft.com/en-us/archive/msdn-magazine/2008/february/test-run-the-microsoft-ui-automation-library

 

3.      简单明了的中文介绍:

 

https://blog.csdn.net/ffeiffei/article/details/6637418

 

WinAppDriver 

 

官网介绍: http://appium.io/docs/en/drivers/windows/

 

Winappdriver总体介绍, 环境搭建,代码样本, 注意事项: 

 

https://techcommunity.microsoft.com/t5/testingspot-blog/winappdriver-and-desktop-ui-test-automation/ba-p/1124543#

 

环境安装

1.      安装Node.js 和Appium :

https://www.cnblogs.com/liuhui0308/p/11981195.html

建议Appium的非GUI和GUI版都安装,我们用的一般是非GUI,但是有时候可以用GUI版本定位问题,比如通过Appium session定位元素。

2.      安装WinAppDriver (官网上WinAppDriver是集成在Appium, 安装了Appium,是不需要再安装WinAppDriver,但是我安装了Appium后,运行程序会提示WinAppDriver未安装,可能是版本问题)

参考 :https://www.cnblogs.com/nanshufang/p/winappdriver.html

 

基本步骤流程

1, 安装Nodejs

2. 安装Appium

3. 安装WinAPPDriver(虽然Appium官网说不用单独安装这个,但是我试了不安装会遇到问题)

4. 我是用C#, 在vs2015(2017)里新建一个工程,并把通过Nuget安装上Appium driver.

  具体设置过程参考: http://appium.io/docs/en/drivers/windows/

5. 启动Appium 

6. 开启开发者模式

7.启动WinAppDriver.exe(这一步一般是不需要的,如果报WinAppDriver没起来或没安装可以试一试)

  在C:\Program Files (x86)\Windows Application Driver, 可以双击里面的WinAppDriver.exe文件

8. 环境好啦,开始写测试代码

 

定位元素-SDK-Inspect.exe

 

官方介绍: https://docs.microsoft.com/en-us/windows/win32/winauto/inspect-objects

 

这里要注意:我发现有些朋友说装了SDK后没有找到inspect.exe, 我猜是因为有几个版号,没有找对文件夹,下图是我电脑上实际找到的位置(找版号最大的,没找到的话,把这几个文件夹都看一下)  

 

C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86

 

 

遇到的问题和解决办法

 

1.      安装完appium,执行代码,报以下错误:

An unknown server-side error occurred while processing the command. Original error: Could not verify WinAppDriver install; re-run install

解决办法:下载安装WinAppDriver

https://github.com/microsoft/WinAppDriver/releases/tag/v1.2-RC

 

Appium官方文档是说Appium上有内置了WinAppDriver,不用单独安装。还有如果只装了GUI Appium,也会报这个错,最好装非GUI版本。

 

2.    Error:

Message: Test method Winformtest.CalculatorSession.TestMethod3 threw exception: OpenQA.Selenium.WebDriverException: Unexpected error. The URL '/session' did not map to a valid resourcer

原因:

url 错了

  //private const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";

改成:   private const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723/wd/hub";

3.   设置待测试APP的路径:

appOptions.AddAdditionalCapability("app", @"C:\Program Files(x86)\....... \****.exe");

报错:

OpenQA.Selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: The system cannot find the file specified

 

这个是我犯的低级错误,目录中的(x86)前面有一个空格,加上空格就好了,为了解决这个问题费了好多时间,一开始还以为自己的方法不对。像这样路径之类信息一定要复制, 不能手动输入

 

4.      之前跑都可以的,可以执行点击或者双击,突然执行click()就报
An unknown error occurred in the remote end while processing the command

如果是Actions, 执行doubleclick() 就报Access Denied 

Element 实际是有找到的,因为代码都没改变,环境也没变

网上找了有很多人遇到类似的问题,特别是远程的时候,如果测试本地没问题,看了解答的,都没有找到根本原因,有时候莫名其妙就好了,有说重启电脑,切换语言的。

我的解决办法:同样的代码,换成在本地跑,是可以过的,于是又切换成server上,发现也好了,莫名其妙的, 后面发现如果把待测APP所在server(我们用的是虚拟机)的窗口关闭或者最小化,就会报这个错,如果保打开状态,就没问题

所以我的解决办法是:保持待测试APP所在server(机器)窗口打开。

 

下面是网上找一些办法,但是不能解决我的问题,也许能解决其他朋友的问题,列在这。

https://github.com/Microsoft/WinAppDriver/issues/361

https://github.com/Microsoft/WinAppDriver/issues/357

https://github.com/microsoft/WinAppDriver/issues/892

https://github.com/microsoft/WinAppDriver/issues/907

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM