Selenium上传文件
写在前面
日常的UI自动化测试过程中,经常会遇到文件上传的业务操作。对于通过input标签实现的上传功能, 我们可以直接利用Selenium提供的方法send_keys() 实现文件上传。这种文件上传实现方式是将本地文件的路径作为一个值放在input 标签中,然后通过form表单将这个值提交给服务器。 本文将针对input标签示范自动化执行文件上传功能。
代码实现方式
为了更直观的演示处理效果,制作了一个上传文件的html。上传文件传送门: Upfile.html[请点点我]
html界面如下图所示:
准备工作:
计算机本地D盘根目录下新建一个txt文件,命名为:upload_file.txt,然后修改后缀名为:upload_file.png 由于html文件限制了上传文件的类型仅为:.jpg .png .jpeg .gif,并且限制了上传文件的大小,所以请按照指示建立upload_file.png。执行以下脚本:
#coding=utf-8 #www.testclass.cn #Altumn from selenium import webdriver import time driver = 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
执行结果如下所示:
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
另一种写法
另一种代码实现方式,执行结果相同。
#coding=utf-8 #www.testclass.cn #Altumn from selenium import webdriver import time driver = 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第三方库。
温馨提示:以下内容回复可见。
作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可
文章评论(8)
非input类型的上传文件,弹出的window系统选择框,录制回放时在没有手动点击的情况下,如何让这个弹框关闭掉?
尝试在文件上传关键字中加了ESCAPE键盘操作,可以关掉弹框了。。。
回复可见~~
自动化测试学习交流群:670250199
haha回复可见
回复可见,隐藏内容挺好呀。
感谢支持。