当前位置: 首页 > news >正文

【selenium】文件上传、下载、读取

    • 1. 文件上传
    • 2. 文件下载
    • 3. 文件读取
      • 3.1 读取txt文件
      • 3.2 读取xml文件
      • 3.3 读取csv文件
      • 3.4 读写excel

1. 文件上传

步骤:

  1. 找到文件上传按钮 <input type="file" name ="file"/>
  2. 通过send_keys (文件路径)上传文件

核心代码示例:

# 定位到文件上传控件
upload_element = driver.find_element_by_id('upload_file')  # 根据实际的元素 ID 进行定位
# 发送文件路径到上传控件
upload_element.send_keys('/path/to/your/file.txt')  # 替换为实际的文件路径

2. 文件下载

  1. 创建Options对象,设置文件下载路径
  2. 点击下载按钮进行文件下载

代码示例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options# 设置 Chrome 选项,可以对 Chrome 浏览器的各种行为和设置进行自定义配置。例如:指定下载文件的保存路径、设置浏览器的代理等等
chrome_options = Options()
# 指定下载文件的保存路径
download_dir = chrome_options.add_experimental_option('prefs', {'download.default_directory': '/your/download/directory'})
# 创建 Chrome 驱动实例
driver = webdriver.Chrome(options=chrome_options)# 打开要下载文件的网页
driver.get('https://example.com/file_to_download')  # 请替换为实际的下载链接
# 找到下载按钮或链接并点击
download_button = driver.find_element_by_id('download_button')  # 根据实际情况修改定位方式
download_button.click()
# 等待文件下载完成
driver.implicitly_wait(10)# 验证文件是否下载成功
file_path = os.path.join(download_dir, "file.txt")
if os.path.exists(file_path):print("文件下载成功!")
else:print("文件下载失败!")
# 关闭浏览器
driver.quit()

3. 文件读取

在UI自动化测试过程中,通常会遇到操作步骤相同,但是因为参数不同而预期结果不同的情况,如:

  • admin账号登录显示的是"你好,admin"
  • zhangsan账号登录显示的是"你好,zhangsan"
    为了防止账号信息变更后要去修改代码,通常将这些信息存储在文件中,在登录的时候直接读取文件,将信息作为参数传入login的方法中,即:数据驱动测试,后续会详细讲解什么是数据驱动测试,本次先为数据驱动做好准备工作

3.1 读取txt文件

核心方法:

  • 以只读方式打开文件: open('./info.txt','r')
  • 读取文件中的所有行:file_path.readlines()

示例:

file_path = open('./info.txt','r')
lines = file_path.readlines()
for line in lines:name = line.split(',')[0]password = line.split(',')[1]print(name,password)

3.2 读取xml文件

xml文件

<?xml version="1.0" encoding="UTF-8"?>
<Root><base><login username="admin" passsword="123456"/><login username="guest" passsword="654321"/></base><Province name="广东省"><City>广州</City><City>深圳</City><City>珠海</City></Province><Province name="安徽省"><City>合肥</City><City>芜湖</City><City>蚌埠</City></Province>
</Root>

读取xml示例

from xml.dom import minidomdocument = minidom.parse("city.xml") # 解析xml
root = document.documentElement # 获得根节点
# 获取所有Province标签
Provinces = root.getElementsByTagName("Province")
# 获取所有City标签
citys = root.getElementsByTagName("City")# 遍历所有Province标签
for i in range(len(Provinces)):print(Provinces[i].getAttribute("name"))# 遍历所有第一个Province下的子元素文本
children = []
for child in Provinces[0].childNodes:# 如果子节点的nodeType等于ELEMENT_NODE,则说明该子节点是一个元素节点if child.nodeType == child.ELEMENT_NODE:children.append(child.firstChild.data)
print(children)

3.3 读取csv文件

import csv
data = open('./sample/account.csv', 'r')for item in data:print(item)

3.4 读写excel

关于读写excel 的内容较多,详见:
【使用xlrd、xlutils读写excel】

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • TF卡(SD NAND)参考设计和使用提示
  • Codeforces Round 963 (Div. 2)
  • 【Git企业级开发实战指南①】Git安装、基本操作!
  • 文件加密软件精品推荐(10款不容错过的文件加密软件)
  • 【Unity】 HTFramework框架(五十四)【进阶篇】Deployment 轻量级资源部署管线
  • VUE框架面试整理-Vuex
  • 将一批 csv 的第一行抄进 Excel
  • C++——智能指针
  • springboot山东外事职业大学校园食堂点餐系统-计算机毕业设计源码10417
  • 前端常用的性能优化方案
  • Pandas行列变换指南:数据重塑的艺术
  • LeetCode刷题笔记 | 3 | 无重复字符的最长子串 | 双指针 | 滑动窗口 | 2025兴业银行秋招笔试题 | 哈希集合
  • 连接未来:幂简集成引领API新时代
  • 大数据技术原理-Hadoop的安装
  • c++ 初始值设定项列表(initializer_list)
  • “大数据应用场景”之隔壁老王(连载四)
  • ES学习笔记(12)--Symbol
  • gops —— Go 程序诊断分析工具
  • JavaScript新鲜事·第5期
  • Java方法详解
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Python socket服务器端、客户端传送信息
  • React-redux的原理以及使用
  • uva 10370 Above Average
  • web标准化(下)
  • 构建二叉树进行数值数组的去重及优化
  • 好的网址,关于.net 4.0 ,vs 2010
  • 设计模式(12)迭代器模式(讲解+应用)
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 跳前端坑前,先看看这个!!
  • 鱼骨图 - 如何绘制?
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 关于Android全面屏虚拟导航栏的适配总结
  • 数据库巡检项
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #单片机(TB6600驱动42步进电机)
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (a /b)*c的值
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (二)测试工具
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .NET delegate 委托 、 Event 事件
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)