前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium文件上传

Selenium文件上传

作者头像
Altumn
发布2019-10-21 16:41:45
1.1K0
发布2019-10-21 16:41:45
举报

写在前面


日常的UI自动化测试过程中,经常会遇到文件上传的业务操作。对于通过input标签实现的上传功能, 我们可以直接利用Selenium提供的方法send_keys() 实现文件上传。这种文件上传实现方式是将本地文件的路径作为一个值放在input标签中,然后通过form表单将这个值提交给服务器。 本文将针对input标签示范自动化执行文件上传功能。

代码实现方式


为了更直观的演示处理效果,制作了一个上传文件的html。地址为:

https://www.testclass.cn/test_html/UpFile.html

html界面如下图所示:

准备工作:

计算机本地D盘根目录下新建一个txt文件,命名为:upload_file.txt,然后修改后缀名为:upload_file.png 。

由于html文件限制了上传文件的类型仅为:.jpg .png .jpeg .gif格式,并且限制了上传文件的大小,所以请按指示建立文件upload_file.png。执行以下脚本:

代码语言:javascript
复制
#coding=utf-8
#www.testclass.cn
#Altumn

from selenium import webdriver
import timedriver = webdriver.Chrome()
driver.get('https://www.testclass.cn/test_html/UpFile.html')
time.sleep(2)

# 定位上传按钮,添加本地文件;
upload = driver.find_element_by_id('up_file')
upload.send_keys('D:\\upload_file.png')  

try:
   Alert = driver.switch_to.alert    
    #获取Alert的Text值;
   print(Alert.text)
   time.sleep(2)    
    #确定Alert弹出框
   Alert.accept()
finally:    
pass

执行结果如下所示:

代码语言:javascript
复制
PS C:\Users\WangXiao\Desktop\python> cd 'c:\Users\WangXiao\Desktop\python'; ${env:PYTHONIOENCODING}='UTF-8'; ${env:PYTHONUNBUFFERED}='1'; & 'C:\Users\WangXiao\AppData\Local\Programs\Python\Python36\python.exe' 'c:\Users\WangXiao\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\ptvsd_launcher.py' '--default' '--client' '--host' 'localhost' '--port' '57201' 'c:\Users\WangXiao\Desktop\python\Untitled-18.py'DevTools listening on ws://127.0.0.1:12666/devtools/browser/874037aa-9e97-4195-a757-cfd7e9095bb6
Upload succeed!---Tips from www.testclass.cn

另一种写法


另一种代码实现方式,执行结果相同。

代码语言:javascript
复制
#coding=utf-8
#www.testclass.cn
#Altumn

from selenium import webdriver
import timedriver = webdriver.Chrome()
driver.get('https://www.testclass.cn/test_html/UpFile.html')
time.sleep(2)

# 定位上传按钮,添加本地文件
driver.find_element_by_id("up_file").send_keys('D:\\upload_file.png')

try:
   Alert = driver.switch_to.alert    
    #获取Alert的Text值;
   print(Alert.text)
   time.sleep(2)    
    #确定Alert弹出框
   Alert.accept()
finally:    
pass

备注:非input标签的文件上传,不适用于此方法,需要借助autoit工具或者SendKeys第三方库。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试testclass 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档