当前位置: 首页 > news >正文

获取每个页面的元素,并写入json

获取每个页面的元素,并写入json

想法:如何去记住每个页面的元素,如何实现不同页面的导航,如何从主页面遍历每一个页面的每一个元素
1.创建数据结构存储
2.树状图正好是我们想要的结构体:创建树状图结构体
3.记录每个页面的元素

import json
import osimport uiautomator2 as u2
import xml.etree.ElementTree as ETdef u2_get_hierarchy(filename):# 获取设备实例id_xpath, class_xpath, text_xpath, class_and_text_xpath = "", "", "", ""mapping = {}device = u2.connect()hierarchy = device.dump_hierarchy()root = ET.fromstring(hierarchy)# 遍历视图层次结构并打印视图信息for element in root.iter():# print( element.attrib)# 获取元素的文本内容text = element.get('text')# 获取元素的 resource-id 属性resource_id = element.get('resource-id')# 获取元素的 class 属性class_name = element.get('class')if resource_id and class_name:id_xpath = f"//*[@resource-id='{resource_id}']"class_xpath = f"//@class='{class_name}'"if text and class_name:text_xpath = f"//*[@text='{text}']"class_and_text_xpath = f"//'{class_name}'[@text='{text}']"if not text and not resource_id:continuename = text if text else resource_id.split("/")[-1]mapping.update({name: {"text": text,"resource_id": resource_id,"class_name": class_name,"id_xpath": id_xpath,"class_xpath": class_xpath,"text_xpath": text_xpath,"class_and_text_xpath": class_and_text_xpath}})filename = f"{filename}.json"if not os.path.exists(filename):with open(filename, "w",encoding='utf-8') as fp:json.dump(mapping, fp,ensure_ascii=False, indent=4)else:with open(filename, "r", encoding='utf-8') as fp:data = json.load(fp)data.update(mapping)with open(filename, "w", encoding='utf-8') as f:json.dump(data, f, ensure_ascii=False, indent=4)if __name__ == '__main__':u2_get_hierarchy(filename="空调")
http://www.lryc.cn/news/466472.html

相关文章:

  • 【ShuQiHere】深入解析数字电路中的锁存器与触发器
  • 【学习AI-相关路程-mnist手写数字分类-python-硬件:jetson orin NX-自我学习AI-基础知识铺垫-遇到问题(1) 】
  • 数据轻松上云——Mbox边缘计算网关
  • ifftshift函数
  • vue3 + ts + element-plus 二次封装 el-dialog
  • MySQL9.0安装教程zip手动安装(Windows)
  • 如何在浏览器中查看格式化的 HTML?
  • 浅谈计算机存储体系和CPU缓存命中
  • ES操作:linux命令
  • Java使用原生HttpURLConnection实现发送HTTP请求
  • TinyC编译器5—词法分析
  • 电子电气架构---智能计算架构和SOA应用
  • Python Numpy 实现神经网络自动训练:反向传播与激活函数的应用详解
  • Apache Calcite - 基于规则的查询优化
  • react学习笔记,ReactDOM,react-router-dom
  • 优化UVM环境(八)-整理project_common_pkg文件
  • 【实战案例】Django框架连接并操作数据库MySQL相关API
  • 【其他】无法启动phptudy服务,提示错误2:系统找不到指定的文件
  • AI驱动的支持截图或线框图快速生成网页应用的开源项目
  • es集群索引是黄色
  • 获取淘宝商品评论的方法分享-调用API接口item_review
  • MATLAB人脸考勤系统
  • Spring篇(事务篇 - 基础介绍)
  • qt EventFilter用途详解
  • [ 钓鱼实战系列-基础篇-6 ] 一篇文章让你了解邮件服务器机制(SMTP/POP/IMAP)-1
  • wordpress伪静态规则
  • 缓存框架JetCache源码解析-缓存定时刷新
  • docker配置mysql8报错 ERROR 2002 (HY000)
  • 【Linux】为什么环境变量具有全局性?共享?写时拷贝优化?
  • 如何在Linux中找到MySQL的安装目录