对于web页面的上传功能一般有两类实现方式:一类是将本地文件的路径作为一个值放在input标签中,通过form表单将这个值提交给服务器;另一个类是插件上传,一般基于flash/javascript或者Ajax等技术实现上传功能。
一.input标签
input标签可以直接通过send_keys()方法上传附件,具体方法可百度。以下重点说明基于Autolt实现上传的方法。
二.基于Autolt实现上传
1.下载并安装Autolt。官方网站:
2.安装成功后打开AutoIt Windows Info工具。鼠标点击Finder Tool变成扇叶指针,按住鼠标左键拖动到待识别的控件(文件名),获取控件信息。获得的文件名信息,其中Basic Window info中Title为“打开”,Class是“#32770”;Basic Control info中Class是“Edti”,instance是“1”
3.获取打开按钮的控件信息,方法同步骤2,记录获取到的信息
4.打开SciTE Script Editor编辑器,根据获取到的控件信息,编写脚本
WinWait()设置5秒用于等待上传窗口的显示
ControlFocus()把输入焦点定位到上传文本框中ControlSetText()输入文件路径sleep 等待上传时间,单位毫秒ControllClick()点击打开按钮,开始上传5.脚本编写完成后,可通过Tools-->GO运行脚本,运行正常,将其保存为.au3格式
6.打开Compile Script to.ext工具,将步骤5中生成的文件转换为exe可执行文件。
生成如下文件
7.通过自动化测试脚本调用up.exe文件
#打开上传窗口 driver.find_element_by_xpath("//*[@id='filePicker']").click() #调用up.exe文件 os.system("C:\Users\guorf\Desktop\up.exe")