AutoIt是一个使用类似BASIC脚本语言的免费软件,被设计用来进行Windows GUI的自动化测试。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。
此次小编介绍的是利用AutoIT编写合适的脚本,然后将脚本编译成可执行文件,在自动化实现时,直接调用此脚本实现文件上传。
案例:从编写好的upfile.html页面完成文件上传操作。
upfile.html
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>upload_file</title> <link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet"/> </head> <body> <div class="row-fluid"> <div class="span6 well"> <h3>upload_file</h3> <input type ="file" name ="file" /> </div> </div> </body> <script src="http://cdn.bootstraps.com/bootstrap/3.3.0/css/bootstrap.min.js"></script> </html>
1.AutoIt下载安装
官方网址:https://www.autoitscript.com/site/
从网站上下载并安装完成后,可以看到如图所示:
AutoIt v3菜单介绍:
AutoIt Windows Info:用于识别Windows控件信息
Compile Script to.exe:用于将AutoIt生成exe执行文件
Run Script:用于执行AutoIt脚本
SciTE ScriptEditor:用于编写AutoIt脚本
2.浏览器打开upfile.html,点击“选择文件”按钮,然后打开AutoIt Windows Info工具,鼠标单击Finder Tool,看到一个类似小风扇的图标,按住鼠标左键,拖动到要识别的控件上(文件名输入框以及“打开按钮”)
我们可以通过AutoIt Windows Info获得以下信息:
窗口title:“文件上传”,标题class:#32770
文件名输入框class:“Edit”,Instance:“1”,ClassnameNN:“Edit1”
打开按钮class:“Button”,Instance:“1”,ClassnameNN:“Button1”
3.根据AutoIt Windows Info的信息,打开SciTE Script Editor编辑器,编写AutoIt脚本
ControlFocus("文件上传", "","Edit1") WinWait("[CLASS:#32770]","",10); ControlSetText("文件上传", "", "Edit1", "D:\upload_file.txt");
Sleep(2000); ControlClick("文件上传", "","Button1");
脚本附注;
ControlFocus ( "title", "窗口文本", controlID): 设置输入焦点到指定窗口的某个控件上
WinWait ( "title题" , "窗口文本" , 超时时间 ): 暂停脚本的执行直至指定窗口存在(出现)为止
ControlSetText ( "title", "窗口文本", controlID, "新文本" ): 修改指定控件的文本
Sleep ( 延迟 ): 使脚本暂停指定时间段
ControlClick ( "title", "窗口文本", 控件ID , 按钮 , 点击次数 ) : 向指定控件发送鼠标点击命令
编写好脚本后,可以运行看看,通过“Tools”-->“Go”,或者“F5”。(注意,运行时,文件上传窗口必须打开)
4.保存脚本为“upfile.au3”文件,然后打开Compile Script to.exe工具,将其生成exe可执行文件。
点击“Browse”,选择“upfile.au3”文件,再点击“Convert”按钮,提示“Completed”即生成成功。
5.打开Pychorm,编辑Python代码
from selenium import webdriver from time import sleep import os driver = webdriver.Firefox() # 打开上传功能页面 driver.get(r'E:\python_script\Webdriver\upfile.html') # 单击打开上传窗口 driver.find_element_by_name("file").click() # 调用upfile.exe程序 os.system(r"E:\python_script\Webdriver\upfile.exe") sleep(3) driver.quit()
运行脚本,就可以实现文件上传。