聊聊PC端自动化最佳方案-WinAppDriver

聊聊PC端自动化最佳方案-WinAppDriver

2023年6月26日发(作者:)

聊聊PC端⾃动化最佳⽅案-WinAppDriver↑↑↑关注后"星标"简说Python⼈⼈都可以简单⼊门Python、爬⾍、数据分析 简说Python推荐

来源:AirPython作者:星安果1. 前⾔⼀提到⾃动化,可能⼤家想到的是 App 端的 Appium、Airtest、AutoJS,亦或是 Selenium、Puppeteer、Cypress 等 Web 端的⾃动化框架本篇⽂章,我将和⼤家聊聊 PC 端的⾃动化⼯具 - WinAppDriver2. 准备WinAppDriver,全称为 Windows Application Driver,它是 Windows 上⼀个类似 Selenium 的 UI ⾃动化驱动服务框架它⽀持 Appium,可以使⽤ Appium-Python-Client 依赖库完成对 Windows 桌⾯程序的⾃动化操作需要注意的是,要使⽤ WinAppDriver 服务框架完成 Windows 的⾃动化,需要满⾜ Windows10 或 Windows Server 2016 以上系统另外,它⽀持的应⽤程序包含:UWP - Universal Windows PlatformWinForms - Windows FormsWPF - Windows Presentation FoundationWin32 - Classic Windows在实现之前,我们需要做好以下准备⼯作2-1 开启「 开发者模式 」关键字搜索「 开发者设置 」,选择开启「 开发者模式 」2-2 安装窗⼝组件元素识别⼯具常⽤的 2 种窗⼝元素识别⼯具为:、FlaUInspect其中作为官⽅的组件元素识别⼯具, 集成于 Windows SDK如果本地不存在该⽂件,可以通过下⾯链接进⾏安装相⽐ ,FlaUInspect 界⾯更简洁,功能更易⽤( 推荐 )2-3 安装 WinAppDriver通过下⾯链接下载 WinAppDriver 应⽤程序,并在本地运⾏起来2-4 搭建 Appium 环境这部分内容涉及 NodeJS 安装及 Appium-Server 环境的搭建2-5 安装依赖最后安装 Python 依赖库 Appium-Python-Client# 安装依赖 Appium-Python-Clientpip3 install Appium-Python-Client3. 实战⼀下我们以操作 PC 端的微信为例,聊聊⾃动化的常见步骤⾸先,我们在本机打开 WinAppDriver 服务,让它在后台运⾏然后,我们使⽤ Python 编写⾃动化脚本通过 ip 地址、端⼝号及 PC 版微信的绝对路径,使⽤ Appium 打开微信import time, osfrom appium import webdriverfrom ver import ActionChainsfrom import Keysfrom time import sleepclass Auto(): def open_weixin(self, host='localhost', port=4723): # 打开WinAppDriver服务 # 注意:如果⼿动开启,则可以注释掉 # (r'start "" /d "C:Program FilesWindows Application Driver" ""') # 配置信息 # 包含:平台名、系统、应⽤程序绝对路径 desired_caps = {'platformName': 'Windows', 'deviceName': 'WindowsPC', 'app': r"D:Program Files (x86)"} try: # 连接WinAppDriver服务,打开⽬标软件 = ('{}:{}'.format(host, port), desired_caps) except Exception as e: raise AssertionError(e)接着,通过「 组件元素识别⼯具 」拿到界⾯元素的属性值,执⾏常见的点击、移动、滑动等操作⽐如:点击「 ⽂件传输助⼿ 」,发送⼀条信息# 给⽂件传输助⼿发送⼀条信息def send_msg(self, element_name, msg): """ :param element_name:元素name值 :param msg: :return: """ # 通过name属性,找到⽬标元素 chat_element = __element_by_name(target_name) # 点击元素,进⼊聊天界⾯ chat_() # 找到输⼊框,并输⼊ __element_by_name("输⼊").send_keys(msg) # 点击右下⾓的发送,发送消息出去 __element_by_name("发送(S)").click()需要注意的是,如果涉及界⾯的滑动,可以使⽤「 ActionChains 」移动⿏标,然后使⽤ win32api 和 win32con 模拟屏幕滑动即可import win32apiimport win32confrom appium import webdriverfrom ver import ActionChains# 模拟屏幕滑动# 1、移动到某个元素区域ActionChains(_driver).move_to_element( __element_by_name("element_name")).perform()# 2、滑动界⾯# ⽐如,向上滚动,模拟滑动_event(VENTF_WHEEL, 0, 0, -500)完成⾃动化操作后,就可以主动释放资源、关闭 WinAppDriver 服务# 释放资源及关闭服务def tearDownFunc(self): print("准备退出") sleep(2) # 1、释放资源 _() # 2、关闭WinAppDriver应⽤程序 (' @taskkill /f /im ')4. 最后在实际使⽤过程中,可能会遇到复杂的桌⾯应⽤程序,这时我们可以通过打印驱动对象的「 page_source」元素控制树值,以此来帮助我们进⾏快速定位元素,进⽽完善⾃动化脚本如果你觉得⽂章还不错,请⼤家 点赞、分享、留⾔ 下,因为这将是我持续输出更多优质⽂章的最强动⼒!--END--扫码即可加我微信观看朋友圈,获取最新学习资源学习更多:整理了我开始分享学习笔记到现在超过250篇优质⽂章,涵盖数据分析、爬⾍、机器学习等⽅⾯,别再说不知道该从哪开始,实战哪⾥找了“点赞、留⾔”就是对我最⼤的⽀持!

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687754092a39636.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信