python进行windows系统UI自动化之【pyautoit】

本文介绍了如何利用Python的PyAutoIt库进行Windows系统UI自动化,详细阐述了AutoIt的安装、使用,包括窗口操作、控件操作、进程操作、鼠标键盘模拟,并提到了常见错误及解决方案,以及在WEB UI自动化和Windows PC自动化中PyAutoIt与其他工具(如Selenium、Airtest)的结合应用。
摘要由CSDN通过智能技术生成


其实,用python进行windows端UI自动化的库有很多,比如pywinauto等,本文介绍一个使用autoit3来实现的 pyautoit 库。

pyautoit 是一个用python写的基于AutoItX3.dll的接口库,用来进行windows窗口的一系列操作,也支持鼠标键盘的操作。

AutoIt现在最新版是V3版本,这是一个类似BASIC脚本语言的免费软件,用于Windows GUI中进行自动化操作。利用模拟键盘按键,鼠标移动,窗口和控件的组合来实现自动化任务,而这是其他语言不可能做到和无可靠方法实现的(例如VBScript和SendKeds)

一、AutoIT中文手册

https://www.autoitx.com/doc/

1.1、安装AutoIt

链接: AutoIt Downloads - AutoIt
下载下图的安装包
在这里插入图片描述
解压后运行后第一个界面直接NEXT

在这里插入图片描述

1.2、使用Auto Window Info

控件control定位
打开Auto Window Info(x64)或Auto Window Info(x86)
在这里插入图片描述
类似于浏览器的F12,使用Finder Tool获取窗口的title等信息
在这里插入图片描述

点击上访的图标,进行拖拉,到想访问的位置,注意下图两个红框中的数值,上面的框表示页面的标题和类,下面的框表示控件的类和序号(一般连起来使用)
在这里插入图片描述

二、python引用

2.1、安装

pip install pyautoit

https://pypi.org/project/PyAutoIt/

2.2、引用

import autoit    # 注意:引用的模块名跟安装的模块名是不一样的

2.3、使用

 启动程序
autoit.run("notepad.exe")
run(filename[,work_dir[,show_flag]]): 运行指定程序
filename参数:设置运行的程序的路径和名称
work_dir参数:设置工作路径。默认为windows系统文件夹(C:\Windows)
show_flag参数:设置窗口显示的方式。默认为Properties.SW_SHOWNORMAL(窗口正常显示) 可选值:
○ Properties.SW_HIDE: 表示隐藏窗口
○ Properties.SW_MAXIMIZE: 表示最大化窗口
○ Properties.SW_MINIMIZE: 表示最小化窗口

run_wait(filename[,work_dir[,show_flag]]): 运行指定程序并暂停脚本执行,直到程序结束
2.3.1、窗口操作
autoit.win_wait_active(title="无标题- 记事本", timeout=10)  # 等待窗口激活
autoit.win_exists("aaa")   # 判断窗口是否存在
autoit.win_get_handle("无标题- 记事本")  # 获取窗口句柄
autoit.win_activate("bbb")  # 激活窗口
autoit.win_close("[CLASS:Notepad]")  # 关闭窗口
此处,窗口标题的匹配模式也是可以自定义的,默认是1 -- 匹配开始部分,可以在脚本前面加上以下改为2--匹配子字符串:
autoit.opt("WinTitleMatchMode", 2)
autoit.win_active(title): 检查指定标题的窗口是否为激活状态返回值: ○  1表示窗口已激活 ○  0表示窗口未激活
autoit.win_close(title): 关闭指定标题的窗口
autoit.win_exists(title): 检查指定标题的窗口是否存在返回值:○ 1表示窗口已存在○ 0表示窗口未存在
autoit.win_get_pos(title): 获取指定标题的窗口的位置和尺寸(left, top, right, bottom) 返回值:[x, y, width, height]
autoit.win_get_process 获取指定窗口关联的进程ID(PID/-1)
autoit.win_get_text 获取指定窗口中的文本(文本/0)
autoit.win_kill(title): 强制关闭指定标题的窗口
autoit.win_move 移动指定的窗口或调整窗口的大小(PID/0) 参数(x, y, width, height)
autoit.win_set_state 显示,隐藏,最小化,最大化或还原一个窗口 参数(flag 1= 显示2 = 最小化/隐藏3 = 最大化4 = 还原)
autoit.win_waitwin_wait(title[, timeout]):  暂停脚本的执行直至指定窗口存在(出现)为止(1/0) 参数(timeout 单位为秒)在指定时间内等待指定标题的窗口打开  time_out参数:设置超时时间,单位为秒(s)。默认为0,表示一直等待
autoit.win_wait_active 暂停脚本的执行直至指定窗口被激活(成为活动状态)为止 参数(timeout 单位为秒)
autoit.win_wait_close(title[,timeout]): 暂停脚本的执行直至所指定窗口不再存在为止 参数(timeout 单位为秒)
autoit.win_wait_active(title[, timeout]):暂停脚本的执行直至指定窗口不是激活状态为止 参数(timeout 单位为秒)在指定时间内等待指定标题的窗口激活time_out参数与win_wait_active函数的timeout参数相同
autoit.control_click 向指定控件发送鼠标点击命令 参数(timeout control 控件)
#脚本连接窗口方法
#1. 使用窗口句柄
auto_setup(__ file__.devices=["Windows:///133194"]) #其中133194就是窗口句柄
#窗口句柄是每个Windows窗口对象拥有的独一无二的32位无符号整数,而且每次打开窗口,句柄的数值都会变化

#2. 使用正则表达式
auto_setup(__file__. devices=["Windows://?title_re=xxx.*])
#大多数情况下,窗口的titIe比较不容易变化,所以我们可以写一个正则表达

#3. 连接桌面
auto_setup(__file__. devices=["Windows:///])
#如果不需要指定某个窗口应用,我们可以直接连接整个桌面来做自动化
2.3.2、控件操作
autoit.control_set_text("无标题", "Edit1", "12312313123")    # 输入文字
autoit. control_click(title, control[,button[, clicks[, x[, y]]]]): 对控件进行点击
	button参数:设置点击方式。默认为“left”,还可以设置为"right" or "middle" 
	clicks参数:设置点击次数。默认为1次
	x:   设置点击的水平位置。默认为center(中心)
	y:   设置点击的垂直位置。默认为center(中心)
autoit.control_get_text(title="title", control="controlid")   # 获取控件文本
autoit.control_command(title="title", control="controlid", command="command")
autoit.control_list_view(title="title", control="controlid", command="command")
autoit.control_tree_view(title="title", control="controlid", command="command")
2.3.3、进程操作
autoit.process.process_wait(process="process", timeout=10)
autoit.process.process_close("process")
autoit.process.process_exists("process")
2.3.4、鼠标操作
autoit.mouse_click(button='left', x=100, y=200, clicks=1, speed=-1)
	mouse_click([button[, x, y[, clicks[, speed]]]]): 点击鼠标
	button参数:设置点击方式。
	默认为“left”, 还可以设置为"right", "middle", "main", "menu", "primary", "secondary"
	x,y参数:鼠标移动的位置。不传参表示在鼠标当前位置点击
	clicks: 设置鼠标点击次数
	speed: 设置鼠标移动的速度。默认-1,速度范围为[1, 100]1最快,100最慢
autoit.mouse_move(x=200, y=300, speed=-1)
	mouse_move(x, y[, speed])
autoit.mouse_wheel(direction="down")
2.3.5、键盘操作
autoit.send(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值