下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第如何提取Playwright录制文件中的元素定位信息我这里主要用到了ast的parsewalkdump三个方法,parse方法将脚本转化为抽象语法树,walk用来遍历整个抽象语法树(类似xml遍历),dump用于调试和将无法解析的内容直接输出,其实这里可以使用unparse或通过linenocol_offsetend_linenoend_col_offset这四个属性定位到源码,但是这些都需要较高的python版本才有,我现在项目中使用的python3.7版本中还没有这些,只能先用dump代替(当然,也是我比较偷懒)。代码如下:
importast
frominspectimportsignature
fromplaywright.sync_apiimportPage
import_num=0
dup_num=0
result=[]
withopen('playwright录制脚本','rb')asf:
root=ast.parse(f.read())
parse_methods=set()
foriindir(Page):
ifnoti.startswith('_'):
attr=getattr(Page,i)
ifcallable(attr):
sign=signature(attr).parameters
if'selector'insign:
parse_methods.add(i)
fornodeinast.walk(root):
ifisinstance(node,ast.Call):
ifisinstance(node.func,ast.Attribute)and\
node.func.attrinparse_methods:
iflen(node.args)==0:
continue
selector=node.args[0]
ifisinstance(selector,ast.Str):
selector=selector.s
elifisinstance(selector,ast.Name):
selector=f'变量:{selector.id}'
else:
selector=f'无法解析:{ast.dump(selector,False)}'
frame_locator=None
ifisinstance(node.func.value,ast.Call)and\
isinstance(node.func.value.func,ast.Attribute)and\
node.func.value.func.attr=='frame':
iflen(node.func.value.args)0:
frame_locator=str(node.func.value.args[0])
else:
frame_node=node.func.value.keywords[0].value
ifisinstance(frame_node,ast.Str):
frame_locator=frame_node.s
elifisinstance(frame_node,ast.Name):
frame_locator=f'变量:{frame_node.id}'
else:
frame_locator=f'无法解析:{ast.dump(frame_node,False)}'
foriinresult:
ifselector==i[0]andframe_locator==i[1]:
dup_num+=1
break
else:
result.append((selector,frame_locator))
print(f"{selector},{frame_locator}{node.func.attr=='query_selector_all'}")
import_num+=1
print(f'成功解析{import_num}条定位信息,跳过{dup_num}条重复信息')
代码解析
代码中很多地方用到了isinstance方法来判断节点是什么类型,因为需要解析的内容都是page.click('...')或page.frame('...').click('...')形式,所以大多数时候需要提取Call对象的func的attr属性即为所需要的定位信息。另外使用了inspect库来提取可能需要解析的方法,如click
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年南充科技职业学院单招职业技能测试题库及答案详解一套
- 2026年包头铁道职业技术学院单招职业技能考试题库带答案详解(a卷)
- 花艺环境设计师安全演练测试考核试卷含答案
- 感光材料乳剂熔化工班组管理考核试卷含答案
- 出河机司机复试能力考核试卷含答案
- 合成树脂生产工安全防护强化考核试卷含答案
- 生猪屠宰加工工7S考核试卷含答案
- 珂罗版制版员岗前冲突解决考核试卷含答案
- 妇女职业规划方案
- 乙烯-乙烯醇树脂装置操作工安全宣教水平考核试卷含答案
- GB/T 45465.1-2025热回收新风机组季节性能系数测试和计算方法第1部分:供热显热回收季节性能系数
- 职业技术学院《智能制造系统》课程标准
- 项目经理廉洁警示教育
- 《浆体管道输送系统的过程监控与故障诊断》
- 高危儿规范化健康管理专家共识解读
- 农业物资:2024年化肥农药销售合同模板
- 2024年03月深圳市深汕特别合作区机关事业单位2024年公开招考46名事务员笔试历年典型考题及考点研判与答案解析
- 2024北京背户车协议书范本
- 巨量引擎推广引流方案
- 中国美食菜谱大全
- 盘扣架安全施工方案审核要点
评论
0/150
提交评论