04-对原生app应用中的元素进行定位

        本文介绍对于安卓原生app应用中的元素如何进行定位。

一、uiautomatorviewer

        uiautomatorviewer是Android-SDK自带的一个元素定位工具,非常简单好用,可以使用该工具查看app应用中的元素属性,帮助我们在代码中进行元素定位。

1)使用步骤
  1. 在Android-SDK安装目录中进入到 android-sdk-windows\tools\ 路径下,直接双击uiautomatorviewer.bat即可启动。
  2. 电脑连接真机或模拟器。
  3. 启动待测试的app应用。
  4. 点击uiautomatorviewer左上角的Device Screenshot按钮,会获取设备当前显示的页面。
  5. 用鼠标点击想要定位的元素。
  6. 查看右下角的node detail,可查看该元素的属性信息。

2)定位元素

        移动端元素定位通常使用以下两种方法:

1、通过id定位,在Android中,id属性就是指resource-id。

注意:Android页面中不同的元素,可能具有相同的id。
driver.find_element('id', id_value)

2、通过xpath定位,在Android中,Toast控件必须通过xpath来进行定位。【Toast(吐司)是Android用于提示信息的一个控件!Toast是一种很方便的消息提示框,会在屏幕中显示一个消息提示框,任何按钮,也不会获得焦点,一段时间过后自动消失!】

注意:Android页面中的元素具有bounds(坐标)属性,xpath正是根据元素的坐标来进行定位的。

driver.find_element('xpath', xpath_value)

3)案例演示
from appium import webdriver
import time# 设置启动参数
desired_cap = {}
desired_cap['platformName'] = 'Android'
desired_cap['platformVersion'] = '6.0.1'
desired_cap['deviceName'] = '127.0.0.1:7555'
# 必须参数,指定被测软件的包名
desired_cap['appPackage'] = 'com.differ.xiaoming'
# 必须参数,指定要打开app的哪个页面
desired_cap['appActivity'] = 'com.differ.xiaoming.activity.CalcActivity'
desired_cap['automationName']='Uiautomator2'
desired_cap['noReset'] = True
desired_cap['newCommandTimeout'] = 6000
desired_cap['unicodeKeyboard'] = True
desired_cap['resetKeyboard'] = Truedriver = webdriver.Remote('http://localhost:4723/wd/hub', desired_cap)
time.sleep(5)# 1.定位数字2
driver.find_element('id', 'com.differ.xiaoming:id/btn_two').click()
# 2.定位加号+
driver.find_element('id', 'com.differ.xiaoming:id/btn_plus').click()
# 3.定位数字6
driver.find_element('id', 'com.differ.xiaoming:id/btn_six').click()
# 4.定位等号=
driver.find_element('id', 'com.differ.xiaoming:id/btn_equal').click()
time.sleep(1)
# 5.打印计算结果
print(driver.find_element('xpath', '//android.widget.EditText[@bounds="[0,542][891,666]"]').text)

二、Appium Inspector

        Appium Inspector是appium自带的一个元素定位工具,这部分将介绍Appium Inspector是如何定位元素的。

        参考文章:https://cloud.tencent.com/developer/article/2370035。

1)Appium中的Appium Inspector

        首先,打开appium并点击Start Server按钮,启动appium server,监听本地4723端口。

        然后,使用以下两种方式打开Appium Inspector窗口。

2)下载安装Appium Inspector

        只有在旧版本的appium中才可通过上述方式打开Appium Inspector窗口,如果使用的是最新版本的appium,就需要单独安装Appium Inspector了。

        安装地址为:https://github.com/appium/appium-inspector。

        如果不想安装,也可以直接使用网页版:https://inspector.appiumpro.com/。

3)Desired Capabilities配置

        直接在对应的输入框中输入以下内容,主要包括目标app应用的包名、Activity名等。

capabilities = dict(platformName='Android',automationName='uiautomator2',deviceName='127.0.0.1:7555',appPackage='com.differ.xiaoming',appActivity='com.differ.xiaoming.activity.CalcActivity',language='en',locale='US'
)

4)Start Session

        上述配置完成之后,点击Start Session按钮,即可进入如下界面。

  • 最左边是目标app应用当前显示的页面。
  • 中间是以XML格式显示界面上的控件布局。
  • 最右边是选择的元素的详细属性信息。

        点击红框按钮,可以选择元素,查看其属性信息。比如:下图中我们选择的是数字3按钮,其详细属性信息在最右边显示。

5)定位元素及操作

        获取到元素属性信息后,就可通过代码对元素进行定位和操作。定位和操作相关代码与uiautomatorviewer中的代码类似,这里不再重复演示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/30098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

el-table 固定前n行 配合 max-height 生效

:row-class-name"TableRowClassName" 加上类名 <el-table:data"computedTableList"borderstyle"width: 100%":row-class-name"TableRowClassName"max-height"800"><el-table-column fixed prop"name"…

【OS基础】符合AUTOSAR标准的RTAOS-Alarms详解

目录 前言 正文 7.报警Alarms 7.1配置Alarms 7.1.1激活一个任务 7.1.2 设置一个事件 7.1.3报警回调Alarm Callback 7.1.4 增加计数器值 7.2设置Alarms 7.2.1 绝对Alarms 7.2.2 相对Alarm 7.3自启动Alarms 7.4 删除Alarms 7.5确认何时会发生Alarm 7.6非周期Alarm…

细致解析跨境电商多平台搭建利器-179海关接口源码应用方法

介绍 跨境电商已成为当前电商行业的热门发展方向之一。为满足跨境电商的需求&#xff0c;各大平台纷纷推出了多平台搭建利器。其中&#xff0c;179海关接口源码是一款非常实用的工具&#xff0c;本文将对其应用方法进行细致解析。 了解179海关接口源码 179海关接口源码可以帮…

2024最新版Vcpkg安装第三方库报错error: building XXXX failed with: BUILD_FAILED

很多朋友用Vcpkg安装第三方库的时候基本都会遇到报错的情况&#xff0c;而且大部分都会出现下面这个页面里面的红色报错信息&#xff0c;但是实际上真正错误应该是上面的Cmake Error提示&#xff0c;下面的红色警告只是Vcpkg官方提供给我们的一个最基础的解决方式&#xff0c;而…

【Docker系列】深入解析 Docker 容器部署脚本

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【稳定检索/投稿优惠】2024年生物技术与食品科学国际会议(ICBFS 2024)

2024 International Conference on Biotechnology and Food Science 2024年生物技术与食品科学国际会议 【会议信息】 会议简称&#xff1a;ICBFS 2024 大会时间&#xff1a;点击查看 截稿时间&#xff1a;点击查看 大会地点&#xff1a;中国厦门 会议官网&#xff1a;www.icb…

汇聚荣优势是什么?

汇聚荣优势是什么?在探讨企业成功之道时&#xff0c;我们不得不提及“汇聚荣优势”这一概念。简而言之&#xff0c;它指的是企业通过整合内外部资源&#xff0c;形成独特的竞争优势&#xff0c;以实现持续发展与市场领先地位的战略行为。这种优势的构建不是一蹴而就的&#xf…

生信网络学院|06月21日《SolidWorks Costing助力制造企业建立成本核算体系》

课程主题&#xff1a;SolidWorks Costing助力制造企业建立成本核算体系 课程时间&#xff1a;2024年06月21日 14:00-14:30 主讲人&#xff1a;张丹清 生信科技 售前顾问 Costing成本分析简介钣金件成本分析加工件成本分析装配体成本分析总结&答疑 安装腾讯会议客户端或…

Windows上使用vscode配置C/C++编译环境

GCC和GDB 一句话概括&#xff1a;gcc用来编译C&#xff0c;gdb用来调试C。 GCC (GNU Compiler Collection) GCC&#xff08;GNU编译器套件&#xff09;是一个由GNU项目开发的编译器系统&#xff0c;支持多种编程语言&#xff0c;如C、C、Objective-C、Fortran、Ada和Go等。G…

ARM32开发-fat_fs文件系统

FAT_FS 文件系统 FAT (File Allocation Table) 文件系统是一种广泛使用的基于磁盘的文件系统,尤其适用于小型嵌入式系统和存储卡。FAT_FS 就是一个专门针对 FAT 文件系统的开源实现。 FAT_FS 的主要特点 轻量级和高度可移植: FAT_FS 是一个非常轻量级的文件系统实现,占用资源少…

人脸识别考勤机给企业带来了哪些好处

人脸识别考勤机给企业带来了哪些好处 随着考勤软件在国内各企业中逐渐使用&#xff0c;人们对于考勤的这种方式已不再生疏&#xff0c;传统的纸质签到、指纹打卡已因存在不灵敏、易作弊、难统计等诸多弊病&#xff0c;逐步被可以管理考勤的手机软件索取代&#xff1b; 近些…

【网络安全的神秘世界】渗透之信息收集流程

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 渗透测试之信息收集 切记&#xff1a;搜索到敏感信息之后&#xff0c;不要随意下载和传播&#xff0c;属于违法行为&#xf…

如何基于ITIL构建有效的IT服务管理体系

在数字经济时代&#xff0c;IT服务管理已成为企业运作的核心支撑。随着信息技术的快速发展和应用&#xff0c;企业对IT服务的需求不断增加&#xff0c;而如何高效地管理这些服务成为一个重要挑战。基于ITIL&#xff08;信息技术基础架构库&#xff09;构建有效的IT服务管理体系…

Virtualbox7.0版本安装报错:Invalid installation directory

错误情况 我在安装virtualbox最新版7.0.18时候&#xff0c;因为默认安装在C盘&#xff0c;我改成了E盘&#xff0c;然后就报错 Invalid installation directory The chosen installation directory is invalid, as it does not meet the security requirements. Refer to th…

那些年我为了考PMP踩过的坑.....

说到考PMP我尊嘟很难过且伤心&#xff0c;众所周知&#xff0c;报考PMP都是要报机构的而且还是PMI认证的机构&#xff0c;所以在报考PMP过程中选的机构我可以说踩过了很多坑了...... Q&#xff1a;包过吗&#xff1f; 大家千万不要信某某机构说的包过噱头&#xff0c;真的很坑…

4000字读懂实时数仓的过去现在和未来(建议收藏)

1991年&#xff0c;比尔恩门&#xff08;Bill Inmon&#xff09;出版了他的第一本关于数据仓库的书《Building the Data Warehouse》&#xff0c;标志着数据仓库概念的确立。 我们所常说的企业数据仓库Enterprise Data Warehouse (EDW) &#xff0c;就是一个用于聚合不同来源的…

【嵌入式】嵌入式Linux开发实战指南:从交叉编译到触摸屏交互

文章目录 前言&#xff1a;1.简介1.1. 交叉编译工具1.2. 项目开发流程&#xff1a;1.3. ARM开发板的连接方法 2. 开发板连接3. 系统文件 IO4. 设置共享文件夹3.1. 读文件3.2. 写文件3.2. 设置文件偏移量 4. LCD显示屏显示4.1. LCD 显示颜色4.2. 将文件下载到开发板4.2.1. 在CRT…

002.Linux CentOS7 安装

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

Git Extensions gui工具差异显示乱码

某些IDE例如KEIL等默认编码格式为GB2312&#xff0c;而git extensions默认utf-8&#xff0c;如果不想修改文件格式为utf-8的话就修改git extensions格式为GB2312。 默认是没有chines 这个选项的&#xff0c;我这里是已经添加好的。方法为上方工具栏->设置->Git->设置…

Linux C编译器从零开发三

AST语法树 BNF抽象 expr equality equality relational ("" relational | "!" relational)* relational add ("<" add | "<" add | ">" add | ">" add)* add mul ("" …