Selenium:AutoIT+Selenium的使用
AutoIt v3是一种免费的类似BASIC的脚本语言,用于自动化Windows GUI和通用脚本。它使用模拟击键,鼠标移动和窗口/控制操作的组合,以便以其他语言(例如VBScript和SendKeys)不可能或不可靠的方式自动执行任务。
安装AutoIT
访问这个网址:https://www.autoitscript.com/site/autoit/downloads/
下载并安装两个文件:SciTE4AutoIt3.exe,autoit-v3-setup.exe
介绍
AutoIt Window Info:元素识别器,是一个类似selenium IDE的工具,元素识别器找到窗口GUI或非HTML弹出窗口的元素,并提供元素的属性,比如 title, class, instance。
SciTE Script Editor:编辑器,用于编写AutoIT脚本。
编写AutoIT脚本
获取属性
- 打开需要上传文件的窗口,通过AutoIt Window Info,拖动Finder Tool获取元素属性:
获取的属性如下,我们会根据这些属性编写脚本。:
方法介绍
这里介绍Web自动化脚本编写过程中可能用到的方法,其余方法查看官方文档:
等待窗口就绪:WinWaitActive(“title”[,“text”[,timeout]])
参数 | 解释 |
---|---|
title | 与元素识别器的Title对应 |
text | 该窗体下的文本,一般""即可 |
timeout | 超时时间,类似于selenium中的WebDriverWait的timeout |
返回窗体的位置信息:WinGetPos("title"[,"text"])
值 | 解释 |
---|---|
$ aArray [0] | X位置 |
$ aArray [1] | Y位置 |
$ aArray [2 | 宽度 |
$ aArray [3] | 高度 |
模拟鼠标点击:MouseClick ( "button" [, x, y [, clicks = 1 [, speed = 10]]] )
参数 | 解释 |
---|---|
button | "left"为鼠标左键,"right"为鼠标右键 |
x,y | 要在坐标为x,y的位置上进行点击 |
clicks | 点击次数 |
睡眠,单位毫秒,5000代表5秒:Sleep ( milliseconds)
将输入焦点设置为窗口上的给定控件:ControlFocus ( "title", "text", controlID )
参数 | 解释 |
---|---|
title | 与元素识别器的Title对应 |
text | 该窗体下的文本,一般""即可 |
controllID | {Class} + {Instance}。如图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tWzlXRAk-1618997380515)(./1553915298102.png)],则该参数值为:Edit1 |
发送鼠标单击命令到给定控件:ControlClick(" title "," text ",controlID )
参数同ControlFocus
设置控件的文本:ControlSetText(" title "," text ",controlID ," new text" )
参数 | 解释 |
---|---|
title | 与元素识别器的Title对应 |
text | 该窗体下的文本,一般""即可 |
controllID | {Class} + {Instance}。如图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aDZ0fpUf-1618997380518)(./1553915298102.png)],则该参数值为:Edit1 |
new text | 要设置到控件中的新文本 |
应用
;等待Title为phpwind - Powered by phpwind - Google Chrome的窗口
Local $win = WinWaitActive("phpwind - Powered by phpwind - Google Chrome","",10)
;在本机分辨率宽度为1616,高度为876的情况下,对坐标点(630,507)进行鼠标左击
$pos =WinGetPos($win)
$high=$pos[3] ;表示窗口的的实际高度
$weight=$pos[2] ;表示窗口的实际宽度
$click_x=630*$weight/1616 ;630表示我在当前电脑分辨率宽度为1616下的X坐标值
$click_y=507*$high/876 ;507表示我再当前电脑分辨率高度为876下的Y坐标值
MouseClick("left",$click_x,$click_y,1)
;等待Class为#32770的窗体
WinWaitActive("[CLASS:#32770]","",10)
;把焦点设置在controllID为Edit1的控件中
ControlFocus("打开","","Edit1")
;设置该控件的文本为C:\Users\qvzn0\Pictures\test.jpeg
ControlSetText("打开","","Edit1","C:\Users\qvzn0\Pictures\test.jpeg")
;点击controllID为Button1的控件
ControlClick("打开","","Button1")
把脚本编译成exe文件
编写完上述脚本后,保存到任意路径,在点击菜单栏Tools -> Complile,出现:
一般默认即可,点击Comlile Script后会在同一目录下生成exe文件。
调用exe文件
在自动化代码打开上传文件的窗体后,调用exe文件即可:
- Java的调用方法:
Runtime.getRuntime().exec("C:/Users/qvzn0/Desktop/test3333.exe");
- Python的调用方法:
os.system("C:/Users/qvzn0/Desktop/test3333.exe")