来源:AirPython
作者:星安果
大家好,我是安果!
一提到自动化,可能大家想到的是 App 端的 Appium、Airtest、AutoJS,亦或是 Selenium、Puppeteer、Cypress 等 Web 端的自动化框架
本篇文章,我将和大家聊聊 PC 端的自动化工具 - WinAppDriver
WinAppDriver,全称为 Windows Application Driver,它是 Windows 上一个类似 Selenium 的 UI 自动化驱动服务框架
它支持 Appium,可以使用 Appium-Python-Client 依赖库完成对 Windows 桌面程序的自动化操作
项目地址:
需要注意的是,要使用 WinAppDriver 服务框架完成 Windows 的自动化,需要满足 Windows10 或 Windows Server 2016 以上系统
另外,它支持的应用程序包含:
在实现之前,我们需要做好以下准备工作
2-1 开启「 开发者模式 」
关键字搜索「 开发者设置 」,选择开启「 开发者模式 」
2-2 安装窗口组件元素识别工具
常用的 2 种窗口元素识别工具为:inspect.exe、FlaUInspect
其中
作为官方的组件元素识别工具,inspect.exe 集成于 Windows SDK
如果本地不存在该文件,可以通过下面链接进行安装
https://download.microsoft.com/download/4/d/2/4d2b7011-606a-467e-99b4-99550bf24ffc/windowssdk/winsdksetup.exe
相比 inspect.exe,FlaUInspect 界面更简洁,功能更易用( 推荐 )
项目地址:
2-3 安装 WinAppDriver
通过下面链接下载 WinAppDriver 应用程序,并在本地运行起来
https://github.com/Microsoft/WinAppDriver/releases
2-4 搭建 Appium 环境
这部分内容涉及 NodeJS 安装及 Appium-Server 环境的搭建
可以参考:
2-5 安装依赖
最后安装 Python 依赖库 Appium-Python-Client
# 安装依赖 Appium-Python-Client
我们以操作 PC 端的微信为例,聊聊自动化的常见步骤
首先,我们在本机打开 WinAppDriver 服务,让它在后台运行
然后,我们使用 Python 编写自动化脚本
通过 ip 地址、端口号及 PC 版微信的绝对路径,使用 Appium 打开微信
import time, os
接着,通过「 组件元素识别工具 」拿到界面元素的属性值,执行常见的点击、移动、滑动等操作
比如:点击「 文件传输助手 」,发送一条信息
# 给文件传输助手发送一条信息
需要注意的是,如果涉及界面的滑动,可以使用「 ActionChains 」移动鼠标,然后使用 win32api 和 win32con 模拟屏幕滑动即可
import win32api
完成自动化操作后,就可以主动释放资源、关闭 WinAppDriver 服务
# 释放资源及关闭服务
在实际使用过程中,可能会遇到复杂的桌面应用程序,这时我们可以通过打印驱动对象的「 page_source」元素控制树值,以此来帮助我们进行快速定位元素,进而完善自动化脚本
1. 前言
2. 准备
https://github.com/Microsoft/WinAppDriver
https://github.com/FlaUI/FlaUInspect
https://www.cnblogs.com/amoyshmily/p/10500687.html
pip3 install Appium-Python-Client
3. 实战一下
from appium import webdriver
from selenium.webdriver import ActionChains
from
selenium.webdriver.common.keys import Keys
from time import sleep
class Auto():
def open_weixin(self, host='localhost', port=4723):
# 打开WinAppDriver服务
# 注意:如果手动开启,则可以注释掉
# os.system(r'start "" /d "C:Program FilesWindows Application Driver" "WinAppDriver.exe"')
# 配置信息
# 包含:平台名、系统、应用程序绝对路径
desired_caps = {'platformName': 'Windows', 'deviceName': 'WindowsPC',
'app': r"D:Program Files (x86)TencentWeChatWeChat.exe"}
try:
# 连接WinAppDriver服务,打开目标软件
self.driver = webdriver.Remote('http://{}:{}'.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 =
self.weixin_driver.find_element_by_name(target_name)
# 点击元素,进入聊天界面
chat_element.click()
# 找到输入框,并输入
self.weixin_driver.find_element_by_name("输入").send_keys(msg)
# 点击右下角的发送,发送消息出去
self.weixin_driver.find_element_by_name("发送(S)").click()
import win32con
from appium import webdriver
from selenium.webdriver import ActionChains
# 模拟屏幕滑动
# 1、移动到某个元素区域
ActionChains(self.weixin_driver).move_to_element(
self.weixin_driver.find_element_by_name("element_name")).perform()
# 2、滑动界面
# 比如,向上滚动,模拟滑动
win32api.mouse_event(
win32con.MOUSEEVENTF_WHEEL, 0, 0, -500)
def tearDownFunc(self):
print("准备退出")
sleep(2)
# 1、释放资源
self.weixin_driver.quit()
# 2、关闭WinAppDriver应用程序
os.system(' @taskkill /f /im WinAppDriver.exe')
4. 最后
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
“用户旅程分析”概念 用户旅程图又叫做用户体验地图,它是用于描述用户在与产品或服务互动的过程中所经历的各个阶段、触点和情 ...
2025-01-22在竞争激烈的商业世界中,竞品分析对于企业的发展至关重要。今天,我们就来详细聊聊数据分析师写竞品分析的那些事儿。 一、明确 ...
2025-01-22在数据分析领域,Excel作为一种普及率极高且功能强大的工具,无疑为无数专业人士提供了便捷的解决方案。尽管Excel自带了丰富的功 ...
2025-01-17在这个瞬息万变的时代,许多人都在寻找能让他们脱颖而出的职业。而数据分析师,作为大数据和人工智能时代的热门职业,自然吸引了 ...
2025-01-14Python作为一门功能强大的编程语言,已经成为数据分析和可视化领域的重要工具。无论你是数据分析的新手,还是经验丰富的专业人士 ...
2025-01-10完全靠数据决策,真的靠谱吗? 最近几年,“数据驱动”成了商界最火的关键词之一,但靠数据就能走天下?其实不然!那些真正成功 ...
2025-01-09SparkSQL 结构化数据处理流程及原理是什么?Spark SQL 可以使用现有的Hive元存储、SerDes 和 UDF。它可以使用 JDBC/ODB ...
2025-01-09在如今这个信息爆炸的时代,数据已然成为企业的生命线。无论是科技公司还是传统行业,数据分析正在深刻地影响着商业决策以及未来 ...
2025-01-08“数据为王”相信大家都听说过。当前,数据信息不再仅仅是传递的媒介,它成为了驱动经济发展的新燃料。对于企业而言,数据指标体 ...
2025-01-07在职场中,当你遇到问题的时候,如果感到无从下手,或者抓不到重点,可能是因为你掌握的思维模型不够多。 一个好用的思维模型, ...
2025-01-06在现代企业中,数据分析师扮演着至关重要的角色。每天都有大量数据涌入,从社交媒体到交易平台,数据以空前的速度和规模生成。面 ...
2025-01-06在职场中,许多言辞并非表面意思那么简单,有时需要听懂背后的“潜台词”。尤其在数据分析的领域里,掌握常用术语就像掌握一门新 ...
2025-01-04在当今信息化社会,数据分析已成为各行各业的核心驱动力。它不仅仅是对数字进行整理与计算,而是在数据的海洋中探寻规律,从而指 ...
2025-01-03又到一年年终时,各位打工人也迎来了展示成果的关键时刻 —— 年终述职。一份出色的年终述职报告,不仅能全面呈现你的工作价值, ...
2025-01-03在竞争激烈的商业世界中,竞品分析对于企业的发展至关重要。今天,我们就来详细聊聊数据分析师写竞品分析的那些事儿。 一、明确 ...
2025-01-03在数据分析的江湖里,有两个阵营总是争论不休。一派信奉“大即是美”,认为数据越多越好;另一派坚守“小而精”,力挺质量胜于规 ...
2025-01-02数据分析是一个复杂且多维度的过程,从数据收集到分析结果应用,每一步都是对信息的提炼与升华。可视化分析结果,以图表的形式展 ...
2025-01-02在当今的数字化时代,数据分析师扮演着一个至关重要的角色。他们如同现代企业的“解密专家”,通过解析数据为企业提供决策支持。 ...
2025-01-02数据分析报告至关重要 一份高质量的数据分析报告不仅能够揭示数据背后的真相,还能为企业决策者提供有价值的洞察和建议。 年薪 ...
2024-12-31数据分析,听起来好像是技术大咖的专属技能,但其实是一项人人都能学会的职场硬核能力!今天,我们来聊聊数据分析的核心流程,拆 ...
2024-12-31