Autoit 制作上传工具完美版
一. 制作上传器
在ui自动化过程中经常遇到需要上传的动作,我们可以使用input标签来送值,但这样不太稳定,所以建议使用autoit制作出来的exe工具。
下面就教大家如何制作上传器,如何使用吧!
新建一个文本文件,命名为uploader.au3,将下面代码复制进去。
这段代码是经过我反复测试的,大家可以放心用哦~
upload() Func upload() WinWait("[CLASS:#32770]","",3) If WinExists("打开") then ControlFocus("打开","","Edit1") Sleep(500) ;输入需要上传的文件路径 ControlSetText("打开", "", "Edit1", $CmdLine[1]) Sleep(500) ;点击【打开】按钮 ControlClick("打开", "","Button1") EndIf ;找不到路径时,会触发确认弹窗,点确认,再点取消,该Button1为确认按钮 Sleep(1000) If WinExists("打开") then ControlClick("打开", "","Button1") EndIf ;路径为空时;或者点过上述的确认弹窗后,不能让它挂在那里,点取消 Sleep(1000) If WinExists("打开") then ControlClick("打开", "","Button2") EndIf EndFunc
二. 转化为可执行的exe软件
使用autoit软件里的 autoit script to exe 工具,选择刚才的uploader.au3脚本进行转化。
三. 测试该exe执行情况
调用exe的执行过程封装在seliky里面了,大家也可以用os模块调用exe。
(注:seliky是我自己发版的库,用起来比较顺心,大家想用的话可以自行安装:pip install seliky -i https://pypi.org/simple)
import time from seliky import WebDriver2 def test_autoit(): """ 在百度识图官网,点击识图按钮,触发系统弹窗,测试上传器执行情况 """ bs = WebDriver2() bs.open_browser() bs.get("https://graph.baidu.com/pcpage/index?tpl_from=pc") bs.click('//span[@class="graph-d20-search-wrapper-camera"]') bs.click('//form[@class="general-upload-imgform"]') uploader_path = 'chrome_uploader.exe' # autoit 上传器测试 bs.upload_with_autoit('', uploader_path) # 路径为空的情况 # bs.upload_with_autoit('d://picture//null.jpg', uploader_path) # 路径错误的情况 # bs.upload_with_autoit('d://picture//girl.jpg', uploader_path) # 路径正常的情况 time.sleep(5) if __name__ == '__main__': test_autoit()