06 APP 自动化- H5 元素定位

article/2025/6/9 5:05:33

文章目录

        • H5 元素定位
          • 1、APP 分类
          • 2、H5 元素
          • 3、H5 元素定位环境的搭建
          • 4、代码实现:

H5 元素定位
1、APP 分类
  • 1、Android 原生 APP
  • 2、混合 APP(Android 原生控件+H5页面)
  • 3、纯 H5 App
2、H5 元素
  • H5 元素容器 WebView
  • WebView 控件实现展示网页
3、H5 元素定位环境的搭建
  • 1、手机下载 chrome 浏览器

  • 2、pc 下载谷歌浏览器

  • 3、下载 chrome driver (自己电脑上的谷歌浏览器版本必须与驱动的版本匹配)

  • 4、查看 WebView 是否开启,前提 WebView 处于 debug 状态下,才可以进入谷歌浏览器的调试界面,才可以展示到webview:

    • 调试地址:chrome://inspect/#devices
    • webview开启调试模式:
      • app中配置如下代码:
        在WebView类中调用静态方法
        setWebContentsDebuggingEnabled(): if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled(true);
      • 注意:一般需要 app 开发人员开启
  • 5、定位 H5 元素的工具:uc-devtools

    • 设置页面-选择本地资源
    • 首页-点击目标页面下面的 inspect
4、代码实现:
# -*- coding=utf-8 -*-
import time
from time import sleep
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as Ec"""
h5 元素定位
"""
# 设置操作终端的配置参数
desired_caps = dict(platformName='Android', # 指定操作系统platformVersion='12',# 指定操作系统版本automationName='Uiautomator2',# 默认框架deviceName='127.0.0.1:62001',# 指定设备名称appPackage='com.wondershare.drfone',# 被操作的应用程序包名appActivity='com.wondershare.drfone.ui.activity.WelcomeActivity',# 启动页面noReset='false',# true--不重置  false--重置app='F:\Pycharm\AppAuto\drfone_v3.2.0.apk',  # apk文件所在路径chromedriverExecutable = "F:\Pycharm\AppAuto\chromedriver.exe" # chrome 浏览器驱动所在路径
)
# 发送命令给 appium server
driver = webdriver.Remote('http://127.0.0.1:4723', options=UiAutomator2Options().load_capabilities(desired_caps))# 操作:打开 drfone app->点击继续->点击确定->点击 Backup->点击 Next->进入 Backup 网页页面
continue_loc = (AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("继续")')
WebDriverWait(driver, 5).until(Ec.presence_of_element_located(continue_loc))
continue_btn = driver.find_element(*continue_loc)
# 点击 继续
continue_btn.click()yes_loc = (AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("确定")')
WebDriverWait(driver, 5).until(Ec.presence_of_element_located(yes_loc))
yes_btn = driver.find_element(*yes_loc)
# 点击 确定
yes_btn.click()backup_loc = (AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("Backup")')
WebDriverWait(driver, 5).until(Ec.presence_of_element_located(backup_loc))
backup_btn = driver.find_element(*backup_loc)
# 点击 Backup
backup_btn.click()sleep(5)next_loc = (AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("Next")')
WebDriverWait(driver, 5).until(Ec.presence_of_element_located(next_loc))
next_btn = driver.find_element(*next_loc)# 点击 Next
next_btn.click()sleep(10)
#原生 app 切换到 webview
print("contexts:",driver.contexts)  # contexts: ['NATIVE_APP', 'WEBVIEW_com.wondershare.drfone']# 切换 h5 环境
driver.switch_to.context('WEBVIEW_com.wondershare.drfone')
# 实现元素定位---和 webview 定位一样
email_loc = (AppiumBy.ID, 'email')
WebDriverWait(driver, 5).until(Ec.presence_of_element_located(email_loc))
email_input = driver.find_element(*email_loc)
email_input.send_keys("17710258895@163.com")
time.sleep(2)# webview 切换到原生 app
driver.switch_to.context('NATIVE_APP')

http://www.hkcw.cn/article/XWOSuZWKGc.shtml

相关文章

项目计划未与实际情况同步更新,如何保持计划的实时性?

项目计划未与实际情况同步更新,可以通过建立实时更新机制、加强信息共享和沟通、引入敏捷管理工具、实施持续监控流程、明确计划更新责任来保持计划的实时性。 其中,建立实时更新机制至关重要。实时更新机制确保项目计划始终反映最新的进展和问题状况&am…

会议效率低下,应该怎么办

面对会议效率低下的问题,建议从以下几个方面进行优化:明确会议目标、控制会议时长、限定参与人员、使用协作工具、制定会议输出机制。其中,明确会议目标 是提升效率的关键起点。很多无效会议根源在于“为什么开会”这个问题没有回答清楚。只有…

LabVIEW基于 DataSocket从 OPC 服务器读取数据

LabVIEW 中基于 DataSocket 函数从 OPC 服务器读取数据的功能,为工业自动化等场景下的数据交互提供了解决方案。通过特定函数实现 URL 指定、连接建立与管理、数据读取,相比传统 Socket 通信和 RESTful API ,在 OPC 服务器数据交互场景有适配…

数据挖掘顶刊《IEEE Transactions on Knowledge and Data Engineering》2025年5月研究热点都有些什么?

本推文对2025年5月出版的数据挖掘领域国际顶级期刊《IEEE Transactions on Knowledge and Data Engineering》进行了分析,对收录的62篇论文的关键词与研究主题进行了汇总,并对其中的研究热点进行了深入分析,希望能为相关领域的研究人员提供有…

结合 AI 生成 mermaid、plantuml 等图表

AI 画图 AI 画图并不是真的让 AI 画一个图片,而是让 AI 根据你的需求,生成对应的需求文本,再根据 “文本画图” 来生成图片。 Mermaid mermaid 支持流程图、时序图、架构图等等多种图片绘制。当然最终生成的效果和样式会根据不同的“文本代…

Java基础(二):八种基本数据类型详解

Java基础系列文章 Java基础(一):发展史、技术体系与JDK环境配置详解 Java基础(二):八种基本数据类型详解 目录 一、比特(bit)和字节(Byte)1、定义与换算关系2、应用场景差异 二、各类型详解1、整数类型&a…

数据安全合规体系构建的“三道防线“

引言 "三道防线"模型架构图 #mermaid-svg-wbeppAbwa3Vb3nL2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-wbeppAbwa3Vb3nL2 .error-icon{fill:#552222;}#mermaid-svg-wbeppAbwa3Vb3nL2 .error-text{fi…

MySQL强化关键_019_索引优化

目 录 一、最左前缀原则 1.完全使用索引 2.部分使用索引 3.不使用索引 4.效率折损 (1)使用范围查找 (2)索引断开 二、索引失效场景 1. 索引列参与运算 2.索引列模糊查询以“%”开始 3.索引列是字符串类型,查…

ABAP锁对象

1、锁表 在一些业务场景中,我们需要将某张表或某张表中的某些数据锁定,防止多人对该表进行操作,导致数据出现问题。SAP对于表的锁定,有专门的锁对象。 1.1、创建锁 事务代码SE11,表的锁对象名称,需要以E…

YOLO-V2 (学习记录)

目录 一、记录YOLO-v2 的处理流程步骤 二、优势与不足 三、细节分析 1.候选框K-means计算细节 2.网络输出 3.损失函数(Loss Function) 学习之前,需要补充下论文中提到知识点。 1.什么是Batch Normalization 参考博文:Batc…

AI Coding 资讯 2025-06-03

Prompt工程 RAG-MCP:突破大模型工具调用瓶颈,告别Prompt膨胀 大语言模型(LLM)在工具调用时面临Prompt膨胀和决策过载两大核心挑战。RAG-MCP创新性地引入检索增强生成技术,通过外部工具向量索引和动态检索机制,仅将最相关的工具信…

CAMEL-AI开源自动化任务执行助手OWL一键整合包下载

OWL 是由 CAMEL-AI 团队开发的开源多智能体协作框架,旨在通过动态智能体交互实现复杂任务的自动化处理,在 GAIA 基准测试中以 69.09 分位列开源框架榜首,被誉为“Manus 的开源平替”。我基于当前最新版本制作了免安装一键启动整合包。 CAMEL-…

线程池RejectedExecutionException异常

文章目录 1、报错2、定位3、修复4、线程池使用的一点思考 1、报错 检索项目日志时,发现一个异常堆栈信息,核心报错: java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.CompletableFuture$AsyncSupply480a10c7…

视频监控管理平台EasyCVR安防小知识:监控摄像头异响问题排查与处理

在视频监控系统广泛应用于日常生活的当下,监控摄像头出现异响是常见且影响使用体验的问题。为快速定位和解决该问题,特制定本应用解决方案,依据异响来源分为硬盘录像机异响与监控摄像头异响两类进行处理。 一、硬盘录像机发出异响 硬盘录像机…

NX890NX894美光固态闪存NX906NX908

美光NX系列固态闪存深度解析 技术架构与性能突破 美光NX系列固态闪存(如NX890、NX894、NX906、NX908)的技术核心基于G9 NAND技术,通过优化晶体管结构与制程工艺,显著提升存储密度与读写速度。例如,NX895的MT29F8T08G…

RHEL7安装教程

RHEL7安装教程 下载RHEL7镜像 通过网盘分享的文件:RHEL 7.zip 链接: https://pan.baidu.com/s/1ExLhdJigj-tcrHJxIca5XA?pwdjrrj 提取码: jrrj --来自百度网盘超级会员v6的分享安装 1.打开VMware,新建虚拟机,选择自定义然后下一步 2.点击…

无人机智能识别交通目标,AI视觉赋能城市交通治理新高度

在城市化快速发展的当下,如何实现对道路交通的智能化管理、保障出行安全,成为城市治理的重要命题。传统的交通监控往往依赖地面摄像头,受限于固定视角与安装环境。而今,随着人工智能与无人机技术的深度融合,一种更高效…

使用 HTML + JavaScript 实现文章逐句高亮朗读功能

在这个信息爆炸的时代,我们每天都要面对大量的文字阅读。无论是学习、工作还是个人成长,阅读都扮演着至关重要的角色。然而,在快节奏的生活中,我们往往难以找到足够的安静时间专注于阅读。本文用 HTML JavaScript 实现了一个基于…

《TCP/IP 详解 卷1:协议》第5章:Internet协议

IPv4和IPv6头部 IP是TCP/IP协议族中的核心协议。所有TCP、UDP、ICMP和IGMP 数据都通过IP数据报传输。IP提供了一种尽力而为、无连接的数据报交付服务。 IP头部字段 IPv4 头部通常为 20 字节(无选项时),而 IPv6 头部固定为 40 字节。IPv6 不…

WPS word 已有多级列表序号

wps的word中,原来已生成的文档里,已存在序号。比如,存在2、2.1、2.1.1、2.1.1.1、2.1.1.1.1 5层序号,而且已分为5级。但增加内容的时候,并不会自动增加序号,应该如何解决? 原来长这样&#xff…