目前,一般实现文件图片上传的方式都是有一个按钮,点击之后直接调用操作系统自身的弹框,选择文件后,实现上传。因为Selenium不支持调用操作系统的操作,所以这种情况下,利用Selenium无法完成图片上传,这时,我们可以选择autoit实现。
autoit可以操控控件
下载地址 :https://www.autoitscript.com/site/autoit/downloads/
实现文件上传需要的几个方法:
ControlFocus ( "窗口标题", "窗口文本", 控件ID) 设置输入焦点到指定窗口的某个控件上
WinWait ( "窗口标题" [, "窗口文本" [, 超时时间]] ) 暂停脚本的执行直至指定窗口存在(出现)为止
ControlSetText ( "窗口标题", "窗口文本", 控件ID, "新文本" ) 修改指定控件的文本
Sleep ( 延迟 ) 使脚本暂停指定时间段
ControlClick ( "窗口标题", "窗口文本", 控件ID [, 按钮] [, 点击次数]] ) 向指定控件发送鼠标点击命令
ControlEnable("文件上传","","Edit1")WinWait("[CLASS:#32770]","",10)ControlSetText("文件上传","","Edit1",$CmdLine[1]) #$CmdLine[0] ;参数的数量 $CmdLine[1]第一个参数 (脚本名称后面) $CmdLine[2] ;第二个参数
Sleep(2000) ControlClick("文件上传","","Button1") Sleep(2000)
这样保持起来,然后使用 Compile Script to .exe 打包成exe文件使用python调用:
for i,zzz in enumerate(lists): os.system(r'E:\hello_data\31.exe %s'%zzz)