测试开发全栈之Python自动化 优雅的搞定自动化测试的文件上传

程序员一凡 · 2020年10月28日 · 2714 次阅读

在做 web 自动化时会碰到文件上传的实现功能,这个时候我们应当如何使用 selenium 进行文件的上传呢?
一,标签类型为 input,直接 selenium 直接上传
我们在做 selenium 自动化时,必须要面临的就是页面元素的定位,如果该上传文件功能的标签类型为 input,例如:

以上类型的上传文件功能吗,我们可以直接使用 selenium 中的元素定位 +send_keys() 方法,括号内传入文件路径,例如:
driver.find_element_by_xpath("").send_keys(r"c:/test.png")
以上是针对于元素类型为 input 可直接使用 selenium 上传。

二,标签类型非 input,借助工具 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 进行文件的上传。

以上代码可得知,我们需要先定位上传空间元素并点击,然后使用 python 中的 os.system() 方法执行我们提前准备好的 exe 文件,这样既可实现文件上传的功能!

三,通过接口请求,轻松实现文件上传功能自动化
自动化测试过程中,有些特定的业务场景,如果通过 UI 自动化非常难实现,可以通过接口结合 UI 自动化,满足自动化测试场景需求
比如上传文件,虽然通过 selenium 或 Autoit 能实现,但是建议文件上传类型的自动化通过调用文件上传接口,轻松实现自动化
如图所示:postman 调用文件上传接口

那么,通过 python+request 同样可以轻松实现文件上传功能接口自动化

原创不易,燃烧秀发输出内容,如果有一丢丢收获,点个赞鼓励一下吧!

整理了一份 216 页软件测试大厂面试题,以及 2020 推荐最新的简历模板,送给小伙伴们,关注公众号程序员一凡回复【简历】自行领取,和一些小伙伴建立了一个技术交流群,一起探讨技术,分享技术资料,旨在共同学习进步,如果感兴趣就加入我们吧!

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册