项目场景:
python+selenium+excel自动化测试,读取excel表格中的数字变为小数,日期变为数字。
问题描述
在excel中send_keys输入数字1,执行自动化测试后会变为0.1;
输入日期2023/03/14,执行自动化测试后会变为44999。
原因分析:
具体原因是python xlrd默认将整型转为浮点型。
可通过修改数字的单元格格式来解决默认转浮点型问题。在excel中,数字前面加上英文单引号,例如:’1
日期设置单元格格式也无法解决,故通过修改获取单元格数据代码来解决。
解决方案:
在获取单元格数据代码中加入对表格中的数字和日期转换格式。
python读取excel中单元格的内容返回的有5种类型。
ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
代码如下:
def get_col_value(self, row, col):
if self.get_lines()>row:
cell_type = self.table.cell(row, col).ctype
cell = self.table.cell(row, col).value
if cell_type == 2 and cell % 1 == 0.0:
cell = int(cell) # 浮点转成整型
elif cell_type == 3:
date = datetime.datetime(*xlrd.xldate_as_tuple(cell, 0)) # 第一个参数是要处理的单元格,第二个参数是时间基准0代表以1900-01-01为基准
cell = date.strftime('%Y/%m/%d') # 转为字符串
elif cell_type == 4:
if cell == 1:
cell = True
else:
cell = False
return cell
return None
遗留问题:在执行完自动化测试,日期又变为数字,导致每次执行前都要修改单元格的日期。
有小伙伴解决的,欢迎留言和我交流~