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