范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

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

  来源:AirPython
  作者:星安果
  1. 前言
  大家好,我是安果!
  一提到自动化,可能大家想到的是 App 端的 Appium、Airtest、AutoJS,亦或是 Selenium、Puppeteer、Cypress 等 Web 端的自动化框架
  本篇文章,我将和大家聊聊 PC 端的自动化工具 - WinAppDriver 2. 准备
  WinAppDriver,全称为 Windows Application Driver,它是 Windows 上一个类似 Selenium 的 UI 自动化驱动服务框架
  它支持 Appium,可以使用 Appium-Python-Client 依赖库完成对 Windows 桌面程序的自动化操作
  项目地址:https://github.com/Microsoft/WinAppDriver
  需要注意的是,要使用 WinAppDriver 服务框架完成 Windows 的自动化,需要满足 Windows10 或 Windows Server 2016 以上系统
  另外,它支持的应用程序包含:UWP - Universal Windows PlatformWinForms - Windows FormsWPF - Windows Presentation FoundationWin32 - Classic Windows
  在实现之前,我们需要做好以下准备工作
  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 界面更简洁,功能更易用( 推荐  )
  项目地址:https://github.com/FlaUI/FlaUInspect
  2-3 安装 WinAppDriver
  通过下面链接下载 WinAppDriver 应用程序,并在本地运行起来
  https://github.com/Microsoft/WinAppDriver/releases
  2-4 搭建 Appium 环境
  这部分内容涉及 NodeJS 安装及 Appium-Server 环境的搭建
  可以参考:https://www.cnblogs.com/amoyshmily/p/10500687.html
  2-5 安装依赖
  最后安装 Python 依赖库 Appium-Python-Client
  # 安装依赖 Appium-Python-Client
  pip3 install Appium-Python-Client3. 实战一下
  我们以操作 PC 端的微信为例,聊聊自动化的常见步骤
  首先,我们在本机打开 WinAppDriver 服务,让它在后台运行
  然后,我们使用 Python 编写自动化脚本
  通过 ip 地址、端口号及 PC 版微信的绝对路径,使用 Appium 打开微信
  import time, os
  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()
  需要注意的是,如果涉及界面的滑动,可以使用「 ActionChains 」移动鼠标,然后使用 win32api 和 win32con 模拟屏幕滑动即可
  import win32api
  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)
  完成自动化操作后,就可以主动释放资源、关闭 WinAppDriver 服务
  # 释放资源及关闭服务
  def tearDownFunc(self):
  print("准备退出")
  sleep(2)
  # 1、释放资源
  self.weixin_driver.quit()
  # 2、关闭WinAppDriver应用程序
  os.system(" @taskkill /f /im WinAppDriver.exe")4. 最后
  在实际使用过程中,可能会遇到复杂的桌面应用程序,这时我们可以通过打印驱动对象的「 page_source 」元素控制树值,以此来帮助我们进行快速定位元素,进而完善自动化脚本

78官测摩动核破军星君吕布文章转自78DM鸣谢摩动核提供评测件今天再次收到了一款非常有分量的产品摩动核的吕布,真的沉,真的坠手做工方面想必大家也有所了解,在国内的厂商中算是中上水平大概比例为172,体型巨大SKYLAB简单讲解低功耗蓝牙的市场应用有别于经典蓝牙,低功耗蓝牙凭借低功耗UART串口透明传输空中升级等特性在物联网行业有快速的发展,为让物联网智能终端产品设计及开发者更进一步了解低功耗蓝牙,本篇SKYLAB小编就从低带您了解2020年物联网领域内不可或缺的高精度定位模块基于位置信息的服务越来越多,物联网市场定位需求也从室外延伸到室内,定位精度也从最初的米级定位精度提升到现在的厘米级定位精度。纵观整个物联网市场,部分关键性产品依然起到不可替代的作用5。0蓝牙网关VDB2603所具有的特性和应用5。0蓝牙网关是指集成WiFi和蓝牙两种通信方式,且蓝牙部分支持BLE5。0蓝牙的网关产品。主要负责采集蓝牙终端产品的数据信息,实现物联网应用场景中的数据透传,远程控制,也可以作为我们之间终究隔着一个钱窗外的雨声越来越大,她用力的闭上了那双炯炯有神的眼睛,因为有些酸疼,几秒钟后,她睁开双眼抬头看了看黑板正上方的表,又快要下晚自习了,还有五分钟。她扫了一眼班级,每个人都在书海里紧张高精度GNSS授时模块,工业级小尺寸北斗授时模块SKG09DT卫星授时应用其实是极为普遍的,日常生活中不可或缺的电力系统交通信号灯通信系统等,都需要卫星授时的时间同步支持。为满足市场中这类客户的高精度时间同步需求,SKYLAB推出了一系列高精带您了解2020年物联网领域内不可或缺的WiFi模块在智能家居智能交通智慧楼宇智慧医疗中一定少不了无线通信模块搭建的沟通桥梁,传统的硬件设备嵌入WiFi模块可以直接利用WiFi联入互联网,WiFi模块已经成为实现无线智能家居M2M等机器人第七轴的组件介绍机器人第七轴机器人行走轴机器人地轨机器人外部行走轴,各式各样的称呼指的全部都是第七轴。机器人第七轴还可以分为轻型重型焊接的锻造的吊挂式地轨式等,不同的类型适合不同的作业场景,所选材创纪云携创新产品,亮相第十四届中国商业信息化行业大会暨展览会3月25日27日,一年一度的中国商业信息化行业大会在南昌绿地国际博览中心隆重召开。大会以赋能进化,在变革中赢得先机为主题,云集众多优秀的软硬件解决方案商同台竞技,争相展示企业最新成美妆品牌如何通过数字化摆脱生命力短暂的魔咒在物联网大数据等创新技术的加持下,美妆企业的数字化转型开始从一种美好的幻想,变成真正能提升企业运营效率的重要手段。宝洁前任CEO麦睿博提出,要让宝洁成为首家实现全面数字化的公司,借苏宁易购拟筹划股份转让盐津铺子2020净利增88。70苏宁易购停牌控股股东张近东等拟筹划公司股份转让事宜2月25日消息苏宁易购发布公告称,本公司收到公司实际控制人控股股东张近东先生以及股东苏宁电器集团有限公司的通知,其拟筹划本公司股份
罗永浩自曝欠债6亿还了4亿!网友这才是爷们!大家好,我是老李。今天我们来聊聊罗永浩。欠债6个亿,还了4亿,罗永浩努力挣钱还债令人敬佩!前夜在脱口秀大会舞台上带来首次脱口秀表演,罗永浩吐槽自己在接受直播电商接受游戏代言后,至今特朗普夺冠?是阴谋还是阳谋?大家好,我是老李。今天我们来聊聊特朗普夺冠。长假已经第四天了,大家是在旅游中还是宅在家里补充能量呢?老李我去音乐节好好体验了一把Live现场的魅力。本月2号特朗普突然宣告得了新冠,日本大叔存1亿元养老,励志而心酸大家好,我是老李。今天我们来聊聊日本养老。今天是长假第5天,而开篇,老李就想和大家聊聊一个每个人不得不面对的事情。关于养老,你做好准备了吗?养老,存一个亿够不够?老李最近看到隔壁日90分钟破1000000!小米有品众筹爆款,网友国货之光什么是产品的品牌力?就是提起来大家都知道的认知,像提到汽车我们就想到宝马奔驰,提到5G技术大家就想到华为,提到手机就想到小米苹果三星等,提到家电大家会想到美的格力飞利浦松下等。提到苹果新品确定,AirPods3像个蹲厕?果粉却表示果断买看了看2020年的苹果,虽然出货量排名有所下降,但是新品还是挺多的,有英特尔的Mac有M1的Mac有iPhoneSE有iPhone12有iPad有AppleWatch到了今年,苹果论选择男人和保险大家好,我是老李。世界上其实没有那么多老实的男人。有很多老实的人,仅仅是他们还没有经受过足够的测试。因此,在男人和保险中,建议首先选择保险。很多女生都咨询过我,但最后却没有买保险,花呗借呗被点名背后的真相,恐怕只有5的人才意识到大家好,我是老李。今天和大家聊聊关于负债的事。前几天刚刚写过关于暂缓蚂蚁上市这事,高层监管部门直接点名批评部分网贷,利用场景化的描述,诱导低收入和年轻人超前消费,最终深陷债务危机正婚礼上的悲剧新郎坠亡,新娘分走公婆大半养老金大家好奥,我是老李。今天和大家聊聊一起离奇的婚礼事故。攒了一辈子的积蓄突然不属于自己的了,遇到这种事相信谁都无法接受。但现实中这样的故事一直在上演。某媒体报道一位家住东北辽宁的老父事关众多投资者的重磅消息大家好,我是老李。今天和大家聊聊一条事关投资者的重磅消息。前段时间蚂蚁集团暂停上市,让众多买了蚂蚁战略配售基金的投资者很担心,笔叔周围就有不少朋友亲戚当初也买了,甚至调了闹钟去抢购2020年,失去别墅的中产们大家好,我是老李。今天和大家聊聊步入中产陷阱的中产阶级们。19年买的别墅烂尾了,掏空2代人6个钱包凑够的别墅的首付突然变成了一个笑话,这让今年36岁的互联网工程师林先生感到沮丧,但延迟退休,可能真的要来了大家好,我是老李。今天和大家聊聊最新的延迟退休政策。延迟退休,可能真的要来了。在11月3日国家发布的十四五规划和2035年的远景目标建议说明里,提到了在十四五期间将会实行渐进式延迟