web自动化测试图片上传的两种方法:
filetest!
请上传一个文件:
这类可以通过selenium直接实现:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get(r"http://192.168.225.137/html5/file.html")
#通过send_keys()上传
driver.find_element_by_css_selector("[type='file']").send_keys("C:\\Users\\Administrator\\Desktop\\html5.txt")
对于不是input框实现的上传怎么办,这种上传千奇百怪,有用a标签的,有用div的,有用button的,有用object的,我们没有办法通过直接在网页上处理掉这些上传,唯一的办法就是打开OS弹框,去处理弹框。
OS弹框涉及的层面已经不是selenium能解决的了,怎么办?很简单,用OS层面的操作去处理呗,利用autoIT工具可以。
AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。
处理思路
1. 利用AutoIT编写合适的脚本,然后将脚本编译成可执行文件;
2. AutoIT脚本编译成可执行文件后,放到本地的某一个目录下;
3. 需要上传图片时,首先定位到【上传】字样文本,点击此按钮,打开os窗口;
4. 执行编辑后的可执行文件,实现文件上传;
备注:编写脚本和编译,需要借助AutoIT提供的工具,但是脚本编译成可执行文件后,可以直接使用,不再需要安装AutoIT。
#下面是上传图片的
#打开os窗口
driver.find_element_by_xpath(".//*[@id='uploader-demo']/div/div").click()
#上传经过autoIT编译好的exe文件
os.system(r".\files_exe\mrw_pic.exe")
sleep(2)
下载并安装AutoIT,下载链接:https://www.autoitscript.com/site/autoit/
AutoIT安装成功后,可以在开始菜单下看到AutoIT的所有工具,如下图所示:
打开此工具,利用此工具来识别Windows控件信息,如输入框、按钮等。
1、首先打开AutoIt Windows Info 工具,鼠标点击Finder Tool,按住鼠标左键拖动到需要识别的控件上。
通过识别可知道:
根据以上所识别的空间信息,利用此编辑器,利用此软件根据AutoIT的语法编写脚本。
附实现文件上传需要的几个方法:
;ControlFocus( "窗口标题", "窗口文本", 控件ID) 设置输入焦点到指定窗口的某个控件上
ControlFocus("打开","","Edit1")
;WinWait( "窗口标题" [, "窗口文本" [, 超时时间]] ) 暂停脚本的执行直至指定窗口存在(出现)为止
WinWait("打开","",10)
;ControlSetText( "窗口标题", "窗口文本", 控件ID, "新文本" ) 修改指定控件的文本
ControlSetText("打开","","Edit1","C:\Users\Administrator\Desktop\工作\测试截图\3.png")
;Sleep( 延迟 ) 使脚本暂停指定时间段,这里是以毫秒为单位的
Sleep(1000)
;ControlClick( "窗口标题", "窗口文本", 控件ID [, 按钮] [, 点击次数]]) 向指定控件发送鼠标点击命令
ControlClick("打开","","Button1")
AutoIT脚本编写完成后,保存,可以通过菜单栏“Tools”-->“Go” 或F5运行一下脚本。
注意:运行的时候,上传窗口需处于打开状态。
脚本编辑运行无误后,将其保存。然后打开Complie Script to .exe工具,将保存的脚本编译成exe可执行文件。
通过Python 的os模块的system()方法可以调用exe程序并执行。
了解了上传的实现过程,那么下载也是一样的。