【Selenium自动化测试】上传文件
创始人
2025-05-31 18:21:22

上传文件是web比较常见的功能之一,但webdriver并没有提供专门用于上传的方法,因为上传一般意味着要与操作系统进行交互。比如点击"上传"按钮后,就会打开本地操作系统的窗口以供选择要上传的文件,而到这一步,webdriver是没有办法与之交互操作系统控件的。

在 Web 页面中一般通过以下两种方式实现文件上传。

  • 普通上传:将本地文件路径作为一个值放在input 标签中,通过form 表单将这个值提交给服务器。
  • 插件上传:一般是指基于Flash、JavaScript 或Ajax 等技术实现的上传功能。

对于通过 input 标签实现的上传功能,可以将其看作一个输入框,即通过send_keys()指定本地文件路径的方式实现文件上传。
下面通过一个本地实例来演示通过表单上传的例子:




上传表单




在浏览器中打开的效果如下:
在这里插入图片描述

import os
from selenium import webdriver
file_path = os.path.abspath('./files/')
driver = webdriver.Chrome()
upload_page = 'file:///' + file_path + 'upload.html'
driver.get(upload_page)
# 定位上传按钮,添加本地文件
driver.find_element_by_id("file").send_keys(file_path + 'test_up_load.txt')

这里测试的页面(upfile.html)和上传的文件(test.txt)位于与当前程序同目录的files/目录下。通过这种方式上传,就避免了操作Windows 控件。前提是如果能找到上传的input 标签,那么基本可以通过send_keys()方法输入一个本地文件路径实现上传。
对于插件上传的,可以通过AutoIt这款开源软件来实现,其是专门用于Windows GUI实现自动化操作的。可以通过一系列步骤将自动化操作封装成脚本或.exe文件,然后再通过Python去调用,这样结合Selenium和AutoIt就可以实现web的上传文件功能。有兴趣的小伙伴可以自行去了解下,后续有机会的话我也会推出新文章介绍一下。

以上就是本期文章的所有内容,感谢观看,如果对您有帮助请点赞关注+收藏,一键三连,多谢支持!

相关内容

热门资讯

cad打印线条粗细设置 cad... 004-线型(下)打印样式设置和线型文件使用一、线宽设置方法制图规范里边的线宽要求,我们已经定义好,...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...