转载:原文地址
情景:
在用selenium进行web页面自动化时,时不时会遇到上传附件的情况,常见的情况就是一个上传按钮,点击后弹出windows窗口,选择文件后上传,如下图所示
使用AutoIt这个工具实现该功能:
1、下载并安装
进入官网:选择AutoIt -> Downloads
https://www.autoitscript.com/
选择Full Installation版本,点击Download Autolt
下载后可直接安装
2、探测软件
首先从“开始”菜单里找到"Au3Info_x64.exe" 打开
(2).打开需要上传的页面,点击上传,弹出上传窗口;
(3).在AutoIt上面,用鼠标按住Finder Tool不放(鼠标图标变成一个轮子的样子),移动到上传窗口的文本输入框中,然后松开
松开后查看探测结果
主要关注图6中红色标注的信息:
窗口标题,即Title,图中是“文件上传”
窗口的class,图中是32770
控件的类型以及编号,图中类型是Edit,编号(Instance)是1,表明是窗口中第一个文本输入框
类似地,重复上面的一步,获取“打开”按钮的信息
3、编写脚本
从开始菜单中打开SciTE Script Editor,编写内容:
脚本内容如下,分号开头的是注释:
; 等待5秒钟,让上传窗口出现
WinWait("[CLASS:#32770]","",5)
;把输入焦点定位到上传输入文本框中,类型为Edit,编号为1,也就是上面获取到内容
ControlFocus("文件上传", "","Edit1")
;在文件名那里,输入需要上传的文件绝对路径
ControlSetText("文件上传", "", "Edit1", 'D:\files\file_name')
;等待上传时间,单位是毫秒 1秒 = 1000 毫秒,文件大的话需要设置长点
Sleep(5000)
;点击"打开"按钮,也就是上传,完成整个上传过程
ControlClick("文件上传", "","Button1");
保存为.au3脚本,然后在浏览器中点击上传,使上传窗口出现,如图1所示,然后在SciTe Scripts Editor里面选Tools -> Go (或直接按F5) 即可看到自动上传效果。
4.转换为exe文件
在开始菜单中打开"Compile sctrip to .exe x64"(32位的机器选x86),然后选择要装换的.au3文件和输出的exe文件路径和名称,最后点击下面的"Convert"即可
5.使用python调用
使用配Python调用是,首先用python控制selenium,打开上传窗口,然后用
import os
os.system(r'C:\Users\dell\Desktop\no_argument.exe') #这里是保存的exe文件,根据自己的实际情况修改
然后跑python脚本,即可完成文件上传。