# 提取pdf中的测试步骤表数据并将其存储在数据库中
导入 pdfplumber,时间
来自.models import ScenarioInfo # 这是模型中引入的ScenarioInfo表
pdfplumber.open(r " C:\\\\用户\\\\ hisoft \\\\桌面\\\\(2019-09-25)_21460.pdf " )as pdf:
m = 0 # 测试步骤表的数量(由标头数量计算)
s = " \ lt;表\ gt; tbody \ gt; "
mjcd = "" # 上一级菜单
for i in范围(29,len(pdf.pages)):# 从第30页获取表单数据
page = pdf.pages [i] # 设置操作页面
n = 1 # 当前页面的第n个表
用于表在中page.extract_tables ():
k = 是
用于行in 范围(len(表)):
如果 str(表[
行]) == r " ["步骤","案例步骤","预期结果","测试信息","耗时(秒\\\\ n)","结果"] ":# 这是基于表行的内容来确定是否它是新表的开始,因为标题内容是固定的>
if i == 29 and n == 1:# 确定它是否是第30页的第一个表单
通过
其他 :
s + = " \ lt;/正文\ gt;/表\ gt; "
打印(" i = " ,i)
# print(" s =",s)
# print(" mjcd =",mjcd)
m + = 1
ScenarioInfo.objects.create(test_steps = s,lrry = " 哈哈哈 ",mjcd = mjcd)# 保存在数据库中,s是缝合的表单字符串,富文本将识别表单标签显示
time.sleep(0.6 )
mjcd = ""
s = " \ lt;表\ gt; \ lt; tbody \ gt; "
for j in range(len (表[行])):
如果 j == 0:# 确定它是否是当前行的第一列
s + = " \ lt; tr \ gt; \ lt; td \ gt; "
s + = 表[行] [j]
如果 j == 1:# 要确定它是否是当前行的第二列,请取出上一级菜单,如果有多个上一级菜单,则仅采用第一个菜单
如果 k:
如果 len(表[row] [j].split(" 搜索并打开菜单:[ "))\ gt; 1 :
mjcd = table [row] [j].split(" 搜索以打开菜单:[ ")[1].split(" ] " )[0]
k = 错误
如果 j == len(表[行])-1:# 确定它是否是当前行的最后一列
s + = " \ lt;/td \ gt; \ lt;/tr \ gt; "
其他 :
s + = " \ lt;/td \ gt; \ lt; td \ gt; "
如果 i == len(pdf.pages)-1:# 确定它是否是最后一页
如果 n == len(page.extract_tables()):# 确定它是否为最后一个形式
for行in range(len (表)):
如果 row == len(表格)-1:# 确定它是否是当前表的最后一行
for j in range(len (表[行])):
如果 j == len(表[行])-1:# 确定它是否是当前行的最后一列
s + = " \ lt;/正文\ gt;/表\ gt; "
打印(" i = " ,i)
打印(" end_s =: " ,s)
m + = 1
打印(" m = " ,m)
打印(" mjcd = " ,mjcd)
ScenarioInfo.objects.create(test_steps = s,lrry = " 哈哈哈 ",mjcd = mjcd)# 保存在数据库中
n + = 1