如何优雅的搞定自动化测试的文件上传?

发表于:2022-1-21 09:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:软件测试狂阿沐    来源:CSDN

  在做web自动化时会碰到文件上传的实现功能,这个时候我们应当如何使用selenium进行文件的上传呢?
  一,标签类型为input,selenium直接上传
  我们在做selenium自动化时,必须要面临的就是页面元素的定位,我们可以直接使用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同样可以轻松实现文件上传功能接口自动化。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号