Python+Appium自动化测试(5)-appium元素定位常用方法(二)

简介: appium继承了selenium框架中webdriver提供的元素定位方法,接下介绍几种常用的方法。

二,appium移动端自动化常用的元素定位方法


appium继承了selenium框架中webdriver提供的元素定位方法,接下介绍几种常用的方法。


1,find_element_by_id()


如果某个元素的resource-id对应的值在app当前页面是唯一,那么就可以优先通过id定位该元素。以上图中点击【发布】按钮为例,写法如下

driver.find_element_by_id("com.ss.android.article.news:id/cde").click()


2,find_element_by_class_name()


元素的class属性值唯一,可以通过class name定位。如下图中所指的元素,其class属性值在当前页面唯一

微信图片_20220424142556.png

写法如下

find_element_by_class_name("android.widget.HorizontalScrollView")


3,find_element_by_xpath()


这大概是元素定位过程中用的最多的方法,使用比较灵活。以下是xpath的具体实现方式。


3.1,使用text文本构造xpath


如果当前页面某元素的text属性值唯一,就可以使用text文本构造xpath,如【发布】按钮

# "//*[@text='发布']"该字符串表示:当前页面下所有元素里面text='发布'的元素
drvier.find_element_by_xpath("//*[@text='发布']").click()


3.2,使用class与其他属性结合构成xpath


class唯一的话可以使用find_element_by_class_name()定位,但大部分情况向class都不是唯一的,此时可以用class与其他属性结合构成xpath,如:

# class与text
driver.find_element_by_xpath("//android.widget.TextView[@text='消息通知']").click()
# class、text、resource-id结合,注意text与id之间使用and
driver.find_element_by_xpath("//android.widget.TextView[@text='消息通知' and @resource-id='com.ss.android.article.news:id/c_3']").click()

微信图片_20220424142603.png


3.3,通过父元素定位子元素


在实际项目中,我们可能通过UI的层级结果进行定位。如下图,我们要定位【收藏】按钮,除了使用2方外,还可以它的上一级元素定位。

# 父元素下面有4个class相同的子元素,子元素后面不加索引,则默认定位的是第一个子元素
driver.find_element_by_xpath("//androidx.recyclerview.widget.RecyclerView/android.widget.RelativeLayout")

微信图片_20220424142608.png

子元素有多个,通过class的索引定位

# 后面的2表示索引,注意uiautomatorviewer里显示的是从0开始的,而xpath里面是从1开始
driver.find_element_by_xpath("//androidx.recyclerview.widget.RecyclerView/android.widget.RelativeLayout[2]")

微信图片_20220424142612.png

3.4,通过元素子元素定位父元素


即通过下一级元素定位上一级元素。

# 后面的/..表示当前级的上一级,此处即整个下载管理按钮区域
driver.find_element_by_xpath("//android.widget.TextView[@text='下载管理']/..")

微信图片_20220424142616.png

同样定位元素的上一级的上一级(孙子定位爷爷),如下

driver.find_element_by_xpath("//android.widget.TextView[@text='下载管理']/../..")


3.5,定位兄弟元素


通过同级元素定位,下面以定位【下载管理】上的图标为例

# 兄->父->兄
driver.find_element_by_xpath("//android.widget.TextView[@text='下载管理']/../android.widget.ImageView")

微信图片_20220424142621.png


三,总结。


  • 具体使用什么样的方式定位,与app开发框架有关,一般使用id与xpath使用的比较多。需要注意的是,能使用的id定位元素的话就不要使用xpath定位,因为id定位元素方便维护的同时,效率也相对xpath更高。


  • xpath语法的基础知识需要有所了解,这样有助于能更好的理解元素定位。


  • 当然appium还有其他的定位元素方法,这里不做过多的介绍,有兴趣的话可以去百度其他方法。实际使用过程中,常用的就是以上几种方法。
相关文章
|
1月前
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
|
1月前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
33 4
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
95 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
19天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
1月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
29 4
|
1月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
70 3
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
53 1
|
1月前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
95 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
2月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!