Selenium对于上传文件这个操作有很多种办法
一种是最简单的sendkeys,参数加上文件路径就可以了
不过sendkeys貌似仅仅能应对input标签,所以当开发运用别的方法开发控件,那我们就需要用其他方法了
二种是模拟keyboard操作,一步步滴操作,不过这种我没有试过不做评价
三种使用插件直接对系统窗口做操作
这里推荐一种叫AutoIt的工具
附上官网:https://www.autoitscript.com/site/
通过官网可以直接下载
下载完毕后,在开始里显示有这么些个工具,各自都有用途,下面一一介绍
根据自己的操作系统选择相对应的版本
1.首先是Window Info这个东西
它就是有点像浏览器里的F12定位元素
点击拖拽至目标窗口可以看到会把窗口的元素写进Window Info里
比如拖拽到文件上传窗口上
可以看到,Title叫做文件上传,还有class,instance都是等会需要用到的
简单的介绍完毕,至于其他的功能有兴趣的朋友们可以自己研究下
2.获取好元素信息后,就是编码了,打开SciTE Script Editor
内置的语言有点类似VBS 可以F1查看帮助文档
介绍一些常用的语句:
ControlFocus:将焦点设置在什么控件上
参数依次是Window的title,control的text和controlid
那我们可以把输入框的属性抓一下得到后,点到Control tab下查看该控件的属性,可以看到Text属性为空,ID为1148
例如:ControlFocus("文件上传","",1148)
WinWait:等待几秒,在此期间如果找到窗口和控件则进行下一步,如果没有找到,跑完等待时间进行下一步
参数依次是Window的title,control的text,等待的时间(秒)
例如:WinWait("文件上传","",5)
ControlSetText:对某控件输入内容
参数依次是Window的title,控件的text,控件id,和输入内容
例如: ControlSetText("文件上传","",1148,"fwweffwe")
ControlClick:控件点击
参数依次是Window的title,控件的text,控件id
例如:ControlClick("文件上传", "",1);
Sleep(500):线程等待500ms。
这些操作组合起来就可以完成上传文件了
; Wait 10 seconds for the Upload window to appear
WinWait("文件上传","",5)
;ControlFocus("title","text",controlID)
ControlFocus("文件上传","",1148)
; Set the File name text on the Edit field
ControlSetText("文件上传", "", 1148, @ScriptDir & "\1.png")
Sleep(500)
; Click on the Open button
ControlClick("文件上传", "",1);
点击F5可以执行代码
@ScriptDir是脚本的目录
3.需要把你的脚本让selenium调用到,怎么做呢
需要用到Complie Script to .exe
首先将你刚才的脚本保存到某个文件,保存下来的格式为au3为后缀的文件
然后需要用如下图,将其转换为exe文件供selenium调用
这个操作就不说了吧,一目了然吧不懂的可以留言!
最后在selenium中需要先点出窗口,然后执行exe文件可以操作完成
其实还是比较简单的,它的脚本不难!