Appium自动化测试-------xpath定位元素详解

app自动化测试——XPATH高级用法 通过父节点查找子节点,子节点有多个,找第二个子节点//*[@resource-id="com.xueqiu.android:id/title_container"]/android.widget.FrameLayout[2]显式指定要返回的祖先//*[@text="HK"]/ancestor::android.widget.RelativeLayout[1]方式二://[@text="HK"]/parent::/parent::*方式一://*[@text="HK"]/../.. 阅读详情

前面也说过appium也是以webdriver为基的,对于元素的定位也基本一致,只是增加一些更适合移动平台的独特方式,下面将着重介绍xpath方法,这应该是UI层元素定位最强大的方法啦!

以淘宝app为例,定位左上角扫一扫按钮

1.如果元素text是唯一的,可以通过text文本定位

   //*[@text=’text文本属性’]

# 定位text
driver.find_element_by_xpath("//*[@text='扫一扫']").click()

2.如果元素id是唯一的,也可以id属性定位

   //*[@resource-id=’id属性’]

# 定位 resource-id
driver.find_element_by_xpath("//*[@resource-id='com.taobao.taobao:id/tv_scan_text']").click()

 同样可以联合上面两种方式定位,如下

# 也可以联合@resource-id属性和@text文本属性来下定位
driver.find_element_by_xpth("//*[@resource-id='com.taobao.taobao:id/tv_scan_text'][@text='扫一扫']").click()

3.class属性唯一的话,同样可以通过class属性定位,有两种方法

   第一种: //class属性 

# 定位搜索框 //class属性
driver.find_element_by_xpath("//android.widget.EditText").click()

   第二种: //*[@class=’class属性’] 

# 定位搜索框  //*[@class='class属性']
driver.find_element_by_xpath("//*[@class='android.widget.EditText']").click()

4.通过content-desc属性定位

   //*[@content-desc=’desc的文本’]

#点登录/注册
driver.find_element_by_xpath("//*[@text='注册/登录']").click()
time.sleep(3)
#content-desc定位
driver.find_element_by_xpath("//*[@content-desc='帮助']").click()

contains模糊定位

1)、contains是模糊匹配的定位方法,对于一个元素的id或者text不是固定的,但有一部分是固定的,这种就可以模糊匹配。

  //[contains(@content-desc, ‘帮助’)]

# contains匹配text
driver.find_element_by_xpath('//*[contains(@text, "注册/登录")]').click()
time.sleep(3)
# contains匹配textcontent-desc
driver.find_element_by_xpath("//*[contains(@content-desc, '帮助')]").click()

2)、contains也能模糊匹配id和class属性

  //[contains(@resource-id, ‘id属性’)]

  //[contains(@clsss, ‘class属性’)]

 

#定位搜索框class
driver.find_element_by_xpath("//*[contains(@class, 'EditText')]").click()
time.sleep(3)
driver.back()
#定位id
driver.find_element_by_xpath("//*[contains(@resource-id, 'id/home_searchedit')]").click()

 

组合定位

1)、如果一个元素有2个属性,通过xpath也可以同时匹配2个属性,text, resource-id,class ,index,content-desc这些属性都能任意组合定位

 

# id和class属性   定位搜索框
id_class = '//android.widget.EditText[@resource-id="com.taobao.taobao:id/home_searchedit"]'
driver.find_element_by_xpath(id_class).click()
time.sleep(3)
driver.back()

# text和index属性  定位登录/注册
desc_class = '//*[@text="注册/登录" and @index="1"]'
driver.find_element_by_xpath(desc_class).click()
time.sleep(3)

# class和text属性  定位输入手机号
class_text = '//android.widget.EditText[@text="请输入手机号码"]'
driver.find_element_by_xpath(class_text).send_keys("512200893")
time.sleep(3)

# class和desc  定位帮助
id_desc = '//*[contains(@resource-id, "aliuser_menu_item_help") and @content-desc="帮助"]'
driver.find_element_by_xpath(id_desc).click()

 

层级定位

1)、如果一个元素,它除了class属性(class属性肯定会有),其它属性啥都没有,这种情况用上面方法就不适用了,这个时候可以找他父元素,通过父亲定位儿子

#通过父亲定位儿子  搜索输入框
fa_sun = '//*[@resoure-id="com.taobao.taobao:id/home_searchbar"]/android.widget.EditText'
t = driver.find_element_by_xpath(fa_sun).text
print(t)

如果一个父元素下,有多个相同class的儿子时候,可以通过xpath的索引去取对应第几个,xpath是从1开始数的

# 父元素下第2个儿子 微淘
fu_sun2 = '//*[@resource-id="com.taobao.taobao:id/ll_navigation_tab_layout"]/android.widget.FrameLayout[2]'
driver.find_element_by_xpath(fu_sun2).click()

2)、相反的,可以通过儿子定位父亲

 

# 通过子元素定位父元素
# 方法一: ..
sun_fa1 = '//*[@resource-id="com.taobao.taobao:id/tv_scan_text"]/..'
c = driver.find_element_by_xpath(sun_fa1).tag_name
print(c)

# 方法二  parent::*
sun_fa2 = '//*[@resource-id="com.taobao.taobao:id/tv_scan_text"]/parent::*'
d = driver.find_element_by_xpath(sun_fa1).tag_name
print(d)

# 方法三 parent::android.widget.LinearLayout
sun_fa3 = '//*[@resource-id="com.taobao.taobao:id/tv_scan_text"]/parent::android.widget.LinearLayout'
e = driver.find_element_by_xpath(sun_fa1).tag_name
print(e)

 

3)、通过子元素,先找到父元素,再找父元素下的子元素,同样可以进行兄弟元素定位

# 兄弟元素
xiongdi = '//*[@resource-id="com.taobao.taobao:id/bar_search"]/../android.widget.RelativeLayout'
x = driver.find_element_by_xpath(xiongdi).tag_name
print(x)

4)、通过层级关系,一层一层的往下找,同样可以通过爷爷元素,定位到孙子元素

 

#爷爷元素FrameLayout---第一个FrameLayout儿子---孙子TextView
x = '//android.widget.FrameLayout/android.widget.LinearLayout[1]/android.widget.TextView'
t = driver.find_elements_by_xpath(x)
print(len(t))
# 打印文本信息
print(t[0].text
Xpath定位不到元素的可能原因及解决方案 一般来说元素的id是比较稳定的,但是有些元素的id是不断刷新的。解决方案是通过修改Xpath路径来定位隐藏或不可见的元素,可以使用contains()函数、ancestor节点或preceding-sibling节点等来定位目标元素。:如果页面上有多个相同的元素,Xpath默认只会返回第一个匹配的元素。解决方案是使用索引来定位特定的元素,可以使用[1]、[2]等索引来定位第二个、第三个匹配的元素。:有些弹窗,会屏蔽其他元素操作,可以检查是否上层的弹框、下拉框之类的元素遮挡,优先处理弹窗的元素。 阅读详情

相关推荐

5分钟上手Appium自动化测试:Python+雷电模拟器环境搭建与脚本实战

移动端自动化测试是提升软件质量和开发效率的关键技术,其核心原理是通过脚本模拟用户操作,对应用程序进行功能验证和回归测试。在技术实现上,Appium作为跨平台的开源框架,采用Client-Server架构,通过WebDriver协议与移动设备交互,实现了对原生、混合和Web应用的统一测试支持。对于安卓平台,结合Python语言和雷电模拟器,可以快速搭建低成本、高效率的自动化测试环境。这种组合尤其适用于敏捷开发中的快速迭代验证、兼容性测试和冒烟测试等场景。本文将以【环境搭建】和【元素定位】为核心切入点,详细演示

weixin_28842367的博客 318

Appium 关于 appium 的原生控件的 xpath 定位问题及常用方法

关于类似的帖子好像很多,但是没有找到具体能帮我解决问题的办法。还是自己深究了好久才基本知道app上面的xpath定位和web上的不同点: 先放一个图: 第一,appium1.5及之后的版本废弃了name属性(如name=账单,将不被支持用于定位),所以基本的定位就用下id就好了。其他的不多说了。 第二,下面就来说一下关于xpath的定位。主要场景为没有id或者没有text,或者t

onandonandon的专栏 7128

告别元素定位烦恼:手把手教你用Appium Inspector搞定Android UI自动化(附最新下载与配置避坑)

本文详细介绍了如何使用Appium Inspector工具解决Android UI自动化测试中的元素定位难题。从环境配置、设备连接到实战技巧,手把手教你掌握这一Appium生态中的调试神器,有效提升自动化脚本的稳定性与开发效率。特别针对动态ID、嵌套视图等复杂场景提供了专业解决方案。

weixin_33709590的博客 490

Airtest全新升级兼容Selenium 4.0,快来看看更新的内容吧

在上周更新推文中提到,我们Airtest-更新到了1.0.6版本,新增支持Selenium4.0的语法,那么我们来看一下Airtest-Selenium更新后有什么新的内容吧~

2401_83396023的博客 1082

Appium自动化测试环境搭建与实战:从零到一掌握移动端测试

移动应用自动化测试是软件质量保障的关键环节,其核心原理是通过脚本模拟用户操作,实现测试流程的自动化执行。在众多技术方案中,基于WebDriver协议的跨平台框架因其“一次编写,随处运行”的理念而备受青睐,能够显著降低Android与iOS双平台测试的维护成本。这类框架通过客户端-服务器架构,将测试指令转化为设备可执行的命令,其技术价值在于提升回归测试效率、保障版本迭代稳定性。在应用场景上,特别适合需要频繁验证核心功能的移动应用项目。本文以Appium为例,深入解析环境搭建的核心依赖,包括JDK、Node.j

weixin_26833139的博客 285

Accessibility Insights:Windows桌面自动化测试元素定位难题的终极解决方案

在软件自动化测试领域,UI元素定位是构建稳定测试脚本的基础。其核心原理在于通过程序化方式识别和操作界面控件,这直接决定了自动化测试的可靠性和维护成本。对于Windows桌面应用而言,传统的图像识别或坐标定位方式脆弱且低效,而基于可访问性(Accessibility)接口的定位技术则提供了更稳定、语义化的解决方案。Accessibility Insights作为微软官方出品的诊断工具,正是这一技术价值的集中体现。它通过实时检测(Live Inspect)和快速检查(FastPass)两种模式,将UI元素的底层

weixin_42545503的博客 288

appium python框架搭建_appium+python搭建自動化測試框架_Appium元素定位(二)

Appium元素定位:工具:Android\android-sdk\tools uiautomatorviewer.bat1. id定位:self.driver.find_element_by_id('com.tencent.mobileqq:id/btn_login').click()2. class定位:self.driver.find_element_by_class_name('an...

weixin_34801390的博客 151

TVS 和压敏电阻联合使用进行浪涌保护时,压敏电阻的压敏电压要低于TVS 的钳位电压 VC。

通过先让MOV接管,可以确保在大多数情况下,电压不会迅速上升到TVS二极管的钳位电压,从而保护TVS二极管免受持续高能量冲击的损害。总结来说,将MOV的压敏电压设置得低于TVS二极管的钳位电压,可以提供一种分级的保护机制,优化浪涌保护性能,同时保护敏感的TVS二极管不被过度的能量冲击损坏,并延长其使用寿命。MOV吸收的能量(Wmov):假设浪涌电流为10kA,MOV导通后将电压限制在300V,那么Wmov = Ipp * Vmov = 10kA * 300V = 3MW。例如,Vmov可以设定为275V。

weixin_66642980的博客 2246

Appium自动化测试环境搭建与元素定位实战指南

移动端自动化测试是软件质量保障的关键环节,其核心原理是通过模拟用户操作对移动应用进行功能验证。在技术实现上,Appium作为主流的跨平台测试框架,通过WebDriver协议驱动原生、混合及移动Web应用,具有广泛的设备兼容性和语言支持。其技术价值在于显著提升测试效率、实现回归测试自动化,并能在多设备并行执行中保障应用质量。典型的应用场景包括移动应用的冒烟测试、核心功能回归以及兼容性测试。本文聚焦于Appium测试环境搭建与元素定位工具链配置,详细解析了从JDK、Node.js、Android SDK安装到A

weixin_42523326的博客 305

基于Arduino与脑电模块的意念控制LED灯环实现

脑机接口(BCI)技术通过采集和处理脑电信号,实现人脑与外部设备的直接交互。其核心原理是利用传感器捕捉大脑活动产生的微弱电信号,经过放大、滤波和特征提取,转换为可识别的指令。这项技术在医疗康复、神经反馈训练和人机交互等领域具有重要价值。本文聚焦于一个具体的工程实践:使用消费级NeuroSky TGAM模块采集专注度与放松度数据,通过Arduino平台解析信号,并驱动WS2812B LED灯环实现实时可视化反馈。项目涵盖了硬件选型、电路搭建、数据解析和光效映射等关键环节,为脑机接口入门和嵌入式开发提供了完整的

weixin_28721917的博客 278

MiniMaxH3+ComfyUI本地部署:一键整合包、工作流搭建与报错排查

本地部署视频生成模型时,模型权重、推理框架与自定义节点的匹配是核心挑战。MiniMaxH3作为多模态生成模型,通常依赖ComfyUI这类节点式工作流引擎实现可视化调度。一键整合包将Python环境、PyTorch算子、模型文件预置封装,大幅降低部署门槛,并通过半精度加载、显存碎片回收等机制优化推理速度。在文生视频、图生视频与批量生成场景中,清晰的节点链路和参数调优能力直接影响输出质量与显存占用。针对模型不识别、节点执行失败等高频问题,系统排查命令行日志与模型目录可快速定位故障。本文以MiniMaxH3整合包

weixin_29047545的博客 580

Appium Inspector安装与元素定位实战:从连接到调试全攻略

在移动应用自动化测试中,元素定位往往比脚本逻辑更让人头疼。UI层级结构的解析、控件属性的获取、定位策略的选择,一直是测试工程师绕不开的基础能力。Appium Inspector作为一款专业的界面查看工具,通过可视化呈现页面元素树与属性信息,帮助开发者快速理解不同平台(Android/iOS)的控件结构,从而制定稳定的定位方案。无论是resource-id、accessibility id,还是XPath表达式,工具的实时反馈都能显著缩短调试周期。掌握这款工具的连接配置、Capabilities参数设置以及层

weixin_28831461的博客 230

STM32 ADC+DMA实战:手把手教你驱动XGZP6847A压力传感器(附完整代码)

本文详细介绍了如何使用STM32的ADC和DMA外设驱动XGZP6847A压力传感器,包括硬件连接、ADC配置、DMA高效传输实现以及数据处理与校准方法。通过实战案例和完整代码,帮助开发者快速掌握高精度压力数据采集技术,适用于工业控制和医疗设备等领域。

weixin_42570484的博客 404

Appium+Python 实战:移动应用自动化测试中的元素定位与交互技巧

本文详细介绍了使用Appium与Python进行移动应用自动化测试的核心技巧。重点阐述了元素定位的多种策略(如ID、XPath、Accessibility ID)与高效的显式等待机制,并分享了滑动交互、异常处理及页面对象模型等实战进阶方法,旨在帮助测试人员构建稳定、高效的自动化测试流程。

weixin_28842269的博客 418

【ZYNQ驱动双AD9361实战】(一)从官方参考设计到自定义移植

本文详细介绍了如何将ADI官方的单AD9361参考设计移植到ZYNQ平台以驱动双AD9361射频板卡。内容涵盖从环境搭建、官方工程架构解析,到硬件HDL工程修改(包括顶层设计、引脚分配及TCL脚本适配)以及Linux设备树软件配置的全流程实战指南,帮助开发者实现自定义双通道射频收发系统。

weixin_29170327的博客 362

最新Python爬虫实战(入门爬虫篇)——案例13:某乎热榜数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过Python爬虫技术,成功实现了基于Cookies认证的某乎热榜数据爬取与Excel保存。代码采用模块化设计,包含Cookies解析、HTML请求、结构化解析、Excel持久化等完整流程;通过配置浏览器请求头+Cookies认证,有效突破某乎基础反爬策略,保证请求稳定性。整个爬虫逻辑遵循“Cookies认证 → 页面请求 → HTML解析 → 数据清洗 → 保存到Excel”的标准流程,与需要会话验证的网站爬取范式高度一致。Cookies解析与认证。

努力让自己发光,对的人才能迎着光而来 33万+

Appium跨界PC端自动化测试:从环境搭建到XMind实战

UI自动化测试是软件质量保障的核心环节,它通过模拟用户操作来验证应用功能。其原理是基于WebDriver协议,驱动底层操作系统提供的UI自动化框架与控件进行交互。这项技术的价值在于提升测试效率、保障回归测试覆盖率,并支持复杂场景的验证。在应用场景上,除了广为人知的移动端(iOS/Android),它同样适用于桌面端软件测试。本文将聚焦于如何利用Appium这一主流自动化框架,结合WinAppDriver,实现对Windows桌面应用(如记事本、XMind)的自动化操控。通过解析环境搭建、元素定位策略和实战脚

weixin_33859135的博客 335

内存越界一定会导致程序崩溃吗?详解内存越界

本文详细解释了内存越界不一定导致内存越界的问题,全面介绍了C++内存越界的相关内容。

dvlinker的技术专栏 2万+

Appium 元素定位深度讲解:五种方式逐个拆 + Inspector 完整用法

跟 Selenium 一样的写法逻辑,但在 App 端有一些特殊细节。# 按 text 属性定位# 按 content-desc 定位(跟 Accessibility ID 一样的效果)driver.find_element(AppiumBy.XPATH, "//*[@content-desc='搜索']")# 按 class 定位# 按 index(不太推荐,但有时候没办法)# 包含文字。

Gwumingzhibei的博客 305

AD-Copilot 论文解读:把“大模型看图”升级为“对照检验”的工业异常检测助手

本文提出AD-Copilot,一个面向工业异常检测的视觉语言助手,通过视觉上下文比较解决现有方法的不足。针对工业场景中多模态大模型表现不佳的问题,作者指出核心原因在于缺乏工业数据和比较能力不足。为此,论文提出三个关键贡献:构建Chat-AD数据集,设计Comparison Encoder显式建模图像差异,以及采用多阶段训练策略。实验表明,该方法在MMAD基准上达到82.29%准确率,定位任务提升3.35倍,并展现出良好的泛化能力。消融实验验证了比较模块的有效性,表明其成功源于高质量比较数据与显式比较模块的协

blanokvaffy的博客 331

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Appium自动化测试从入门到精通:环境搭建、元素定位与实战技巧

自动化测试是软件工程中提升效率、保障质量的关键实践,尤其在移动应用快速迭代的背景下,其价值愈发凸显。其核心原理是通过脚本模拟用户操作,自动执行测试用例,从而替代重复、易错的手工测试。在移动端,跨平台测试框架成为技术选型的重要考量,它能显著降低多端应用的测试维护成本。Appium作为一款主流的开源移动端自动化测试框架,凭借其支持iOS、Android和Windows平台,以及原生、混合和Web应用测试的能力,成为众多团队的首选。本文聚焦Appium实战,深入解析环境配置中JDK、Android SDK与Nod

weixin_28835789的博客 251

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Appium自动化测试入门:Desired Capabilities配置与Appium Inspector实战指南

在移动应用自动化测试领域,Desired Capabilities是Appium框架的核心配置机制,它定义了测试会话的基本参数,如平台类型、设备信息和被测应用标识。其原理是通过一组键值对向Appium服务器传递初始化指令,确保测试环境与目标设备精确匹配。这项技术的价值在于实现了跨平台测试的标准化配置,大幅提升了脚本的可移植性和执行稳定性。在自动化测试实践中,Desired Capabilities的准确配置直接关系到测试脚本能否成功启动应用并执行后续操作,特别是在测试微信、QQ等复杂应用时尤为关键。通过结合

weixin_28835789的博客 276

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Appium Inspector实战指南:高效定位Android UI元素,提升自动化测试稳定性

UI自动化测试的核心挑战在于如何精准、稳定地定位移动应用界面元素。元素定位是自动化脚本的基石,其稳定性直接决定了测试用例的可靠性和维护成本。在Android生态中,基于Appium框架的UI自动化测试,通过解析应用的UI层级结构(如UIAutomator提供的XML视图),实现对按钮、文本框等控件的识别与操作。这项技术的价值在于将人工测试转化为可重复、可集成的自动化流程,大幅提升回归测试效率,并应用于持续集成/持续交付(CI/CD)流水线。在实际工程实践中,开发者和测试工程师常借助Appium Inspec

weixin_28836507的博客 352

Appium Inspector会话启动与元素定位疑难全解析

移动自动化测试是保障应用质量的关键环节,其核心原理是通过脚本模拟用户操作,对应用界面进行验证。在技术实现上,Appium作为主流的跨平台框架,依赖客户端与服务器、设备的稳定通信链路。其技术价值在于大幅提升测试效率与覆盖率,尤其适用于多设备、多版本的兼容性测试场景。在实际工程实践中,测试人员常面临会话启动失败和元素定位不稳定两大高频难题,这些问题直接影响自动化脚本的可靠性。本文聚焦Appium Inspector这一核心调试工具,深入剖析其连接机制与UI解析原理,提供从环境配置、Desired Capabil

weixin_28842367的博客 324

Appium Inspector 2025.3.1:Android自动化测试元素定位新利器

移动应用自动化测试的核心在于精准、高效地定位UI元素。其原理是通过测试框架与设备UI层交互,识别并操作控件,从而实现模拟用户行为。这项技术的价值在于提升测试覆盖率、保证应用质量并加速迭代流程,广泛应用于金融、电商、社交等各类App的回归测试与兼容性验证。随着技术演进,独立、高效的工具链成为工程实践的关键。本文聚焦于Appium Inspector 2025.3.1这一独立元素检查器,它基于Web技术栈重构,解决了传统集成工具在响应速度和稳定性上的痛点,并通过与Appium Server解耦,提供了更灵活的连

weixin_33691700的博客 485

Appium Inspector 2022.8.1:移动自动化测试元素定位与脚本录制实战指南

在移动应用自动化测试领域,元素定位是构建稳定测试脚本的核心基础。其原理是通过解析应用界面的UI层级结构,识别并操作特定控件,从而实现模拟用户交互。这项技术的价值在于将重复性手动测试转化为可重复执行的自动化流程,显著提升测试效率和覆盖率。在实际工程实践中,面对原生、混合或Web应用等不同场景,精准的元素定位策略直接决定了测试用例的健壮性和可维护性。Appium Inspector 2022.8.1版本作为一款重要的辅助工具,通过实时UI树解析、多维度属性探查和交互式脚本录制功能,有效解决了自动化测试开发中“如

weixin_28833069的博客 262
上一篇: 基于python+appium+yaml安卓UI自动化测试
下一篇: Appium自动化测试-------滑动屏幕如何定位定位元素
java2013liu
博客等级 码龄14年 141粉丝 61原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值