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

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

1. 文件上传

步骤:

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

核心代码示例:

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

2. 文件下载

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

代码示例:

python 复制代码
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()

示例:

python 复制代码
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 复制代码
<?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示例

python 复制代码
from xml.dom import minidom

document = 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文件

python 复制代码
import csv
data = open('./sample/account.csv', 'r')

for item in data:
    print(item)

3.4 读写excel

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

相关推荐
测试杂货铺23 分钟前
外包干了2年,快要废了。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
小码哥说测试2 小时前
接口测试用例设计的关键步骤与技巧解析!
自动化测试·测试工具·jmeter·职场和发展·测试用例·接口测试·postman
小白学大数据9 小时前
正则表达式在Kotlin中的应用:提取图片链接
开发语言·python·selenium·正则表达式·kotlin
awonw18 小时前
[java][框架]springMVC(1/2)
测试工具·postman
迃幵chen1 天前
wireshark-网络分析工具
网络·测试工具·wireshark
孤蓬&听雨1 天前
RabbitMQ自动发送消息工具(自动化测试RabbitMQ)
分布式·测试工具·自动化·rabbitmq·自动发送消息
土小帽软件测试1 天前
jmeter基础01-2_环境准备-Mac系统安装jdk
java·测试工具·jmeter·macos·软件测试学习
qq_433716951 天前
测试分层:减少对全链路回归依赖的探索!
自动化测试·软件测试·功能测试·测试工具·回归·pytest·postman
qq_433716951 天前
Postman断言与依赖接口测试详解!
自动化测试·软件测试·功能测试·测试工具·mysql·接口测试·postman
如光照1 天前
Linux与Windows中的流量抓取工具:wireshark与tcpdump
linux·windows·测试工具·网络安全