在做web自动化时会碰到文件上传的实现功能,这个时候我们应当如何使用selenium进行文件的上传呢?
一,selenium直接上传
大家都知道我们在做selenium自动化时,必须要面临的就是页面元素的定位,如果该上传文件功能的html类型为input,例如:
type="file" name="upload">
以上类型的上传文件功能吗,我们可以直接使用selenium中的元素定位+send_keys()方法,括号内传入文件路径,例如:
driver.find_element_by_name("upload").send_keys(r'E:\Python\111.png')
以上是针对于元素类型为input可直接使用selenium上传。
二,借助工具AutoIT上传
AutoIT介绍:AutoIT是一个类似脚本语言的软件,可对鼠标,键盘,窗口等进行定位及操作,将其编写成一个文件,然后转化为电脑可执行的exe文件。
下载地址:https://www.autoitscript.com/site/autoit/
安装autoit后可在电脑所有程序中找到:
AutoIt Window Info :然后打开页面元素上传控件,使用autoit window info进行定位
可看到定位此控件相关信息为:Title=“打开”,Class为Button,Instance=1,class的坐标为#32770。我们就是利用控件的这些信息,定位控件,编写脚本。
SciTE Script Editor
在所有程序中搜索SciTE Script Editor,打开软件,在里面编辑相关控件内容:
ControlFocus :设定聚焦到某个窗口的某个控件上
WinWait:设定超时时间,直到某个元素坐标出现
ControlSetText:修改指定控件的文本信息,添加上传文件的路径
ControlClick :向鼠标发起指令进行操作控件
sleep:设置等待时间
ControlFocus("打开","","Edit1");识别windows窗口WinWait("[CLASS:#32770]","",10);窗口等待十秒ControlSetText("打开", "", "Edit1", "C:\User\sergou\Desktop\picture\1.png");向输入框中输入需要上传的地址 Sleep(2000)ControlClick("打开", "","Button1");;点击[打开】按钮
脚本编写完成后,可以通过菜单栏“Tools”-->“Go” 运行一下脚本进行调试查看效果。注意,运行的时候,上传窗口需处于打开状态。
Complie Script to .exe
在电脑所有程序中找到Complie Script to .exe软件,对以上编辑保存的文本进行转译成电脑可执行的exe文件
点击browse选择保存的文本,点击convert转译生成一个exe可执行文件,以上即是使用autoit进行文件上传的流程。
python+selenium+autoit
接下来我们需要结合web自动化,如何使用python+selenium+autoit进行文件的上传。
driver.find_element_by_name("upload").click() # 点击上传按钮time.sleep(2)os.system(r'E:\Python\PythonUnintest\resource\auto.exe') # 上传文件
以上代码可得知,我们需要先定位上传空间元素并点击,然后使用python中的os.system()方法执行我们提前准备好的exe文件,这样既可实现文件上传的功能!