为了批量修改生产环境下,公司租户中心的一些配置项,大约有20个左右不同的租户,为了避免在页面上反复的人工修改,借鉴数据驱动测试的思想,将需要修改的租户配置项维护在 excel 文件里,然后读取文件中的数据,遍历每个租户,结合 selenium
定位,去修改相关的元素,模拟点击保存等事件
读取 excel 文件用到的库是 openpyxl
,原本是看网上有些文章使用的 xlrd
库,但是访问 github 上的源码时,发现该项目已经停止维护,并且推荐使用 openpyxl
,所有我在编写程序的时候,使用的是 openpyxl
。
首先,安装 openpyxl
库
pip install openpyxl
下面介绍一些常用简单的用法
创建一个 workbook
对象
from openpyxl import Workbook
wb = Workbook()
查看每个 sheet
对象的两种方式
print(wb.sheetnames)
for sheet in wb:
print(sheet.title)
指定一个 sheet
对象
ws = wb.active
ws = wb["New Title"]
读写一个 cell
对象
c = ws['A4']
c = 'hello'
c = ws.cell(row=4, column=2)
ws.cell(row=4, column=2, value=10)
遍历每行每列的值
for row in ws.values:
for value in row:
print(value)
ws.values
值的类型是 generator
,可以通过 list(ws.values)
转换成列表
导入一个 excel 文件,作为一个已存在的 workbook
对象
from openpyxl import load_workbook
wb = load_workbook('test.xlsx')
完整的读取 excel 文件的代码示例。传入 excel 文件路径,将表格数据,转换成列表,返回结果,从而方便调用方的不同用途
from openpyxl import load_workbook
def read_excel(excel_path):
wb = load_workbook(excel_path)
ws = wb.active
rows = list(ws.values)
fields = rows[0]
result = []
for row in rows[1:]:
obj = {}
for i in range(len(row)):
obj[fields[i]] = row[i]
result.append(obj)
return result
说明:表格默认第一行作为表头字段,所以我们需要先读出第一行的值,作为列字段,然后从第二行开始,遍历每一行的值,转换成字典,再推到列表里,返回结果。
如果这篇文章对您有帮助,记得给作者点个赞,谢谢!
参考资料