原文地址:http://www.testertechnology.com/posts/detail?id=696
在Web自动化测试过程中,有时候我们会遇到文件上传的场景,对于文件上传,一般有两种情况。
1、input标签文件上传
带有input标签并且type属性的值为file可直接使用send_keys方法上传文件。
null
此时就非常简单了,我们可以直接通过send_keys输入图片路径即可
driver.get(‘http://www.testertechnology.com/forum’)
driver.find_element_by_name(‘file’).send_keys(‘D:/code/test.png’)
2、非input标签AutoIt上传文件
对于非input标签的文件上传我们使用AutoIT3,最后测试用例去调用其生成的exe文件。
实现步骤:
1.打开文件上传场景,点击“选择文件”弹出Windows弹框
2.打开AutoIt Windows Info工具,鼠标点击Finder Tool,鼠标将变成一个小风扇形状的图标,按住鼠标左键拖动到需要识别的控件上
null
第前两步通过AutoIt Windows Info获取windows弹框信息:
窗口的title为“打开”,标题的Class为“#32770”。
文件名输入框的class 为“Edit”,Instance为“1” ,所以Classname为“Edit1”。
打开按钮的class 为“Button”,Instance为“1” ,所以Classname为“Button1”
3.根据AutoIt Windows Info 所识别到的控件信息打开SciTE Script Editor编辑器,编写脚本
null
ControlFocus()方法用于识别Window窗口
WinWait()设置10秒钟用于等待窗口的显示
ControlSetText()用于向“文件名”输入框内输入本地文件的路径
ControlClick()用于点击上传窗口中的“打开”按钮
此时在FIle中保存此脚本为名称test.au3文件
- 打开Compile Script to.exe工具,点击“Browse”选择upfile.au3文件,点击“Convert”按钮将其生成为test.exe程序
null
然后开始看代码吧:
driver.get(‘http://www.testertechnology.com/forum’)
driver.find_element_by_id(‘updateico’).click()#点击图片上传Button
time.sleep(5)
os.system(“D:\code\test.exe”)#执行图片上传动作,需要在管理员权限下
此时就完成了图片上传。
没有任何回答