桌面应用自动化winappdriver
关于winappdriver
介绍
- WinAppDriver全称是Windows Application Driver,它提供了一些API,使得用户可以像selenium操作web一样来操作windows的应用程序
- 它支持的系统是Windows 10 (Home and Pro 和Windows Server 2016
- 源码暂未开源
- WinAppDriver可以独立运行,也可以作为appium的一个插件来使用
支持应用类型
-
WPF - also XAML based, much more mature, runs on any Windows version and has been around since 2006。
-
WinForms - one of the older technologies, now found mostly on legacy applications。
WPF和WinForms 是两套界面渲染方式。一个是对传统windows界面元素的封装,通过gdi绘制。另一个是全新的dx渲染绘制的界面,也脱离了对传统windows控件的依赖,没有历史包袱,理论上可以展现更炫酷的界面。
-
MFC/Classic Windows - MFC is a UI library normally paired with Win32 applications. This option is normally chosen when more efficiency is needed with low-level C++ handling or when supporting non-Microsoft platforms。
UWP – Universal Windows Platform, also known as Universal Apps or Modern Apps, It's Microsoft’s latest desktop application technology. It's XAML based. Only runs on Windows 10 machines
资源
素材 | 地址 | 说明 |
---|---|---|
FlaUInspect | https://github.com/FlaUI/FlaUInspect/releases | 定位工具 |
WinAppDriver | https://github.com/microsoft/WinAppDriver/releases/tag/v1.2.1 | |
UIRecorder | https://github.com/microsoft/WinAppDriver/tree/master/Tools/UIRecorder | 定位工具 |
inspect | 微软官方工具集成于 Windows SDK | 定位工具 |
- UIRecorder(下文不涉及,仅供参考与备忘
Open
WinAppDriverUIRecorder.sln
in Visual Studio- Select Debug > Start Debugging or simply Run
支持的定位方式
Client API | Locator Strategy | Matched Attribute in inspect.exe
|
Example |
---|---|---|---|
FindElementByAccessibilityId | accessibility id | AutomationId | AppNameTitle |
FindElementByClassName | class name | ClassName | TextBlock |
FindElementById | id | RuntimeId (decimal | 42.333896.3.1 |
FindElementByName | name | Name | Calculator |
FindElementByTagName | tag name | LocalizedControlType (upper camel case | Text |
FindElementByXPath | xpath | Any | //Button[0] |
配置
开启windows的开发者模式
- 你没看错,不是手机,windows也有
- 第一步:搜开发者设置
- 第二步:打开开发人员模式
- 第三步:确认启用
启动winappdriver
C:\Program Files (x86\Windows Application Driver>WinAppDriver.exe
Developer mode is not enabled. Enable it through Settings and restart Windows Application Driver
Failed to initialize: 0x80004005
开启后启动winappdriver
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.
还可以这样启动
WinAppDriver.exe 4727
WinAppDriver.exe 10.0.0.10 4725
WinAppDriver.exe 10.0.0.10 4723/wd/hub # 推荐
实例
appium-python-client 版本不要用2.0+,此处是1.2.0
记事本
比如记事本
from appium import webdriver
des_cap = {}
des_cap['app'] = r'C:\Windows\System32\notepad.exe'
driver = webdriver.Remote(command_executor='http://127.0.0.1:4723/wd/hub',
desired_capabilities=des_cap
driver.implicitly_wait(5
driver.find_element_by_name('文件(F'.click