普通上传:普通的附件上传都是将本地文件的路径作为一个值放 input 标签中,通过 form 表单提交的时候将这个值提交给服务器。
插件上传:一般是指基于 Flash 与 JavaScript 或Ajax 等技术所实现的上传功能或插件。
第一种:普通上传
如果能找上传的 input 标签,那么基本都可以通过 send_keys()方法向其输入一个文件地址来实现上传。
第二种:AutoIt 实现上传
AutoIt :是一个使用类似 BASIC 脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。
官方网站:https://www.autoitscript.com/site/
从网站上下载 AutoIt 并安装,安装完成在菜单中会看到
操作步骤:
步骤1. 打开AutoIt Windows Info 工具,鼠标点击 Finder Tool,鼠标将变成一个小风扇形状的图标,按住鼠标左键拖动到需要识别的控件上 。
AutoIt Windows Info 识别“文件名”输入框控件
AutoIt Windows Info 识别“打开”按钮控件
通过以上两个步骤得到如下内容:
窗口的 title 为“打开”,标题的 Class 为“#32770”。
文件名输入框的 class 为“Edit”,Instance 为“1” ,所以 ClassnameNN 为“Edit1”(可通过Control标签页查询到该属性)。
打开按钮的 class 为“Button”,Instance 为“1” ,所以 ClassnameNN 为“Button1”。
步骤2、根据 AutoIt Windows Info 所识别到的控件信息打开 SciTE Script Editor 编辑器,编写脚本 ,保存(**.au3)并通过TOOLS-->F5/GO运行脚本
重要说明:运行脚 本时,上传窗口必须为打开状态。
重要说明:在编写脚本输入路径时,是用一个反斜杠,否则会报无效文件名的错误提示。正确文件路径为:d:\baidu.txt
脚本解释:
ControlFocus()方法用于识别 Window 窗口。
WinWait()设置 10 秒钟用于等待窗口的显示,其用法与WebDriver 所提供的 implicitly_wait()类似。
ControlSetText()用于向“文件名”输入框内输入本地文件的路径。
Sleep()方法与 Python 中 time 模块提供的 Sleep()方法用法一样,不过它是以毫秒为单位,Sleep(2000)表示固定休眠 2000 毫秒。
ControlClick()用于点击上传窗口中的“打开”按钮。
步骤3:打开 Compile Script to.exe工具,将au3脚本文件转为 exe 可执行文件
点击“Browse”选择 upload.au3 文件,点击“Convert”按钮将其生成为 upfile.exe 程序。
步骤4:自动化脚本通过os.system(command)语句调用执行upfile.exe,完成上传操作
到底,通过autoIt v3完成上传功能。