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

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

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

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

import json
import os

import uiautomator2 as u2
import xml.etree.ElementTree as ET


def 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:
            continue
        name = 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.kler.cn/news/357930.html

相关文章:

  • Spring Boot框架:图书进销存管理的高效工具
  • 使用 cmake 在 x86 系统中为 arm 系统交叉编译程序
  • JS通过递归函数来剔除树结构特定节点
  • C/C++每日一练:合并两个有序数组
  • 【iOS】AFNetworing初步学习
  • openresty“热部署“lua
  • 【Linux】如何通过系统宏定义,获取进程的退出码或退出信号
  • 使用Python在Jupyter Notebook中显示Markdown文本
  • 前端工程师面试题整理
  • 【C语言教程】【嵌入式编程】(一)介绍与前提条件(二)嵌入式编程基础(三)硬件基础知识(四)硬件寄存器操作
  • linux运行openfoam并行会报错:attempt to run parallel on 1 processor
  • 多个版本的GCC(GNU编译器集合)可以同时安装并存
  • 官龙村捐赠图书整理有感
  • Next.js 学习 - 生命周期
  • Docker技术深度解析与实战案例
  • Java中的String类
  • K8s-pod控制器HPA、DS、Job、CJ
  • 【GeekBand】C++设计模式笔记8_Factory Method_工厂方法
  • Android判断蓝牙设备类型
  • 运算符优先级有没有通用原则?