首页 > 其他分享 >【APP自动化测试】APP元素定位工具

【APP自动化测试】APP元素定位工具

时间:2024-01-30 11:33:41浏览次数:26  
标签:appium APP 元素 Appium weditor 点击 测试 自动化 id

appium做移动端自动化测试,定位元素工具

  • uiautomatorviewer
  • Appium Inspector
  • weditor

前置条件:已连接真机或手机模拟器,adb devices有显示连接的手机列表。

uiautomatorviewer

uiautomatorviewer 是android-sdk自带的一个元素定位工具,目录 D:\xxx\android-sdk-windows\tools 。 双击启动 uiautomatorviewer.bat

界面一共有四个区域:

上方区域,4个按钮从左至右功能分别是:

  • 打开已经保存的布局
  • 获取详细布局 ---把全部布局呈现出来
  • 获取简洁布局 ---只呈现有用的控件布局
  • 保存布局 ---点击保存,将存储两个文件,一个是图片文件,一个是.uix文件(XML布局结构)

截图区(左下),显示当前手机屏幕显示的布局图片

布局区(右上),用XML树的形式,显示界面的控件布局

控件属性区(右下),当爱布局区点击某一控件时,将在这里显示控件的属性

元素定位:

鼠标点击要定位的元素,右下角区域可看到元素对应的属性。

text:            文本
resource-id:     com.oppo.reader:id/IDBookListItem
class:           android.widget.TextView
xpath:           //android.widget.TextView[@resource-id='com.oppo.reader:id/IDBookListItem']

元素定位方法

appium的webdriver提供了 11 种元素定位方法,在selenium的基础上扩展了三个,可以在pycharm里面输入driver.find_element_by然后会自动匹配出来。
多出的三种是:

driver.find_element_by_accessibility_id()
driver.find_element_by_android_uiautomator()
driver.find_element_by_ios_uiautomation()

更多定位方法:https://www.cnblogs.com/upstudy/p/17995225

Appium Inspector工具

优点:

  • 可直接查看xpath路径
  • 可以检测元素id等是否唯一性(点击搜索按钮)
  • 可在页面点击直接跳转,不用先真机操作再刷新页面;

前置条件:已安装 Appium Server 和 Appium Inspector 这2个应用。(1.22.2版本后Server和Inspector是2个应用。)

  1. 启动Appium Server(Appium Server GUI应用),点击startService启动服务。或服务应用,dos窗口中输入appium进行启动服务
  2. 启动Appium Inspector(Appium Inspector应用),在Inspector界面的 Desired Capabilities 中配置启动参数(即代码中编写的cpas内容):

参数配置

  1. 主机和端口与appium server GUI一致,远程路径(Remote Path):/wd/hub
  2. 配置的参数为:
    {
      "platformName": "Android", //平台
      "appium:platformVersion": "9", //android系统版本
      "appium:deviceName": "小米", //设备名称随便写
      "appium:automationName": "UiAutomator2" //可选,使用的自动化工具,没有默认Appium。
    }
  • automationName:使用哪种自动化引擎。Appium(默认),或用于Android的UiAutomator2、Espresso或UiAutoator1,或用于iOS的XCUITest或Instruments,或用于使用You.i引擎构建的应用程序的YouiEngine
  • 如果启动报一些安全异常,可在配置参数中添加参数 "appium:ignoreHiddenApiPolicyError": true 用于忽略安全异常(权限拒绝警报,并允许从Appium 1.18.0+开始继续会话创建过程。当Appium试图放松隐藏的API策略时,会发生错误,尽管一些带有定制固件的设备拒绝了这样的请求。默认为false。)

首次启动会安装这些应用:Appium Setting(io.appium.setting)、io.appium.uiautomator2.server(io.appium.uiautomator2.server)、io.appium.uiautomator2.server.test(io.appium.uiautomator2.server.test)。

可以看到App Source中一层一层嵌套很多层内容,这个是xml格式代码,跟html树型结构类似。xml和html区别:

  • html是用来展示内页,xml格式展示的是安卓页面,
  • xml中的标签名称是可以随便命名的,而html中每个标签名称是固定好的,作用也是固定好的

Appium Inspector定位工具界面功能介绍

1. Selecte Elements:根据元素定位;用来识别元素
2. Swipe By Coordinates:根据坐标滑动页面;如果inspector界面没有展示全部,可以通过上滑展示到底部
3. Tap By Coordinates:根据坐标点击操作;inspector界面点击某个元素,可以跳转到该元素的界面,且app同步跳转
4. Back:返回
5. Refresh Source & Screenshot:刷新界面与截图
6. Start Recording:录制按钮,能自动生成自动化脚本
7. Search for element:在App Source中搜索元素
8. Quit Session & Close Inspector:退出会话或结束
9. Source:源代码显示区域
10. Commands:
11. Actions:
12. Session Information:会话信息
13. Toggle Attributes:切换属性
14. Copy XML Source to Clipboard:复制XML源代码
15. Download Source as .XML File:将源下载为.XML文件
16. Selected Element:被选中元素信息显示

Selected Element: 选中的元素对应的属性信息,这个就是我们查找定位元素的关键信息

安卓的源码结构:

  • index:索引
  • package:包
  • class:类,对应于html的tagname
  • text:文本
  • content-desc:内容描述
  • resource-id:元素ID,不一定唯一。
  • checkable:可选
  • checked:选中
  • enabled:可用
  • focusable:可获得焦点
  • focused:获得焦点
  • scrollable:可滚动
  • long-clickable:可长点击
  • password:隐藏明文(密文显示)
  • selected:选中
  • bounds:界面(起始点坐标/终止点坐标) --边界坐标值,[300,1500][600,1600],类似于html的盒模型。
  • displayed 是不是可以显示

元素布局和控件:

  • imageview 存放图片 ==> tagname (<android.view.imageview>)
  • textview 文本标签
  • layout 用来布局 相当于html中的div
  • button 按钮
  • checkbox 多选框
  • switch 开关(如手机中设置的开关,蓝牙、wifi等开关)
  • ratingbar 评分条
  • seekbar 拖动条(音量条)
  • toast 弹出
  • webview 显示网页,类似iframe,在一个网页中嵌套另一个网页
  • 原生空间里面套网页
  • 其他组件很多

元素定位注意项:

  • id属性:几乎每个元素都有id属性。优先使用id,id不是唯一的 (appium inspect 元素搜索)
  • 每个元素的属性都是固定的
  • class属性:指的不是web当中的class,而是指的是组件类型(ImageView,TextView 标签名称)
  • text属性:app中编写xpath表达式://[@text='']或//[contains(@text='')] --html中编写xpath表达式://[text()='']或//[contains(text(),'')]
  • resource-id:com.lemon.lemonban:id/navigation_my(一般来说,元素中都会有resource-id,但在app当中不一定是唯一的,可以重复的)
  • 如果resource-id不唯一,尝试定位父级元素
  • xpath:组合使用id和其他属性(text,索引)

如何搜索元素:

点击某个元素后,复制id,点击【搜索元素】按钮-->选择定位策略id,粘贴id,点击【查找】按钮 -->选中返回的元素,点击【点击元素】按钮,可以操作跳转到对应页面 (同样使用xpath表达式也可以查找到元素并进行点击)


weditor

weditor是基于浏览器技术的UI查看器,直接在浏览器打开。

  • 缺点:不能和appium同时打开(可以跟airtest一块使用)

安装weditor库(weditor是python的第三方库):

pip install -U weditor  # 该命令会安装uiautomator2和Facebook-wda两个库,分别支持Android和ios的app
如果安装报错,可指定版本:pip install weditor==0.6.4
安装完成后查看版本:pip list | findstr weditor

第一次连接时需要在手机上安装工具

python -m uiautomator2 init  # 执行该命令会自动向手机安装 ATX 和 com.github.uiautomator.test 这2个工具(注意看手机上点击安装)

启动weditor服务

python -m weditor  # 此时会在浏览器中自动访问 http://localhost:17310/ 可看到设备的当前停留页面
重点提醒:
选择设备后方的输入框中一定要输入连接电脑的设备名称(adb devices显示的设备号),不然会一直报错 Local server not started, start with $ python -m weditor

weditor使用

左边选中元素,中间选择操作(工具提供了Tap(点击)、Send Keys(输入)操作),右边就会生成代码,如下:

import uiautomator2 as u2

d = u2.connect()
d.implicitly_wait(60)

d.app_stop_all()
d(resourceId="com.android.systemui:id/clearAnimView").click()
d(description="第2屏").click()

d(resourceId="com.miui.home:id/icon_icon", description="微信").click()
d(resourceId="com.tencent.mm:id/f30", text="发现").click()
d(resourceId="android:id/title", text="视频号").click()

标签:appium,APP,元素,Appium,weditor,点击,测试,自动化,id
From: https://www.cnblogs.com/upstudy/p/17995220

相关文章

  • 网易邮箱大师登录需要下载app吗
    在今天的移动互联网时代,电子邮件已经成为人们生活中不可或缺的一部分。随着手机的普及和使用频率的增加,手机邮箱客户端应运而生,其中网易邮箱大师便是备受欢迎的一款。但对于许多用户来说,一个普遍存在的疑问是:网易邮箱大师登录需要下载app吗?让我们深入探讨这个问题。网易邮箱大师登......
  • Walrus 实用教程|Walrus + Gitlab,打通CI/CD 自动化交付!
    Walrusfile是Walrus0.5版本推出的新功能,用户可以通过一个非常简洁的YAML描述应用或基础设施资源的部署配置,然后通过WalrusCLI执行walrusapply或在WalrusUI上进行import,将Walrusfile提交给Walrusserver,由Walrusserver完成对应用或基础设施资源的部署/配置/......
  • uniapp ArrayBuffer转16进度字符串 以及 十六进制转ASCII码
    1.ArrayBuffer转16进度字符串//ArrayBuffer转16进度字符串示例//ab2hex(buffer){//consthexArr=Array.prototype.map.call(//newUint8Array(buffer),//function(bit){//......
  • 软件测试岗位发展编年史
    最近有同学私信我说,越来越觉得自己跟不上时代了,面试问的问题以及涉及的知识点很多都没接触过,是不是纯粹的软件测试工作快消失了。我问他有哪些擅长的技能,他如此回答道:需求分析、设计用例、抓包分析、维护更新自动化用例、提交跟踪BUG,写测试报告。我一看,这不就是测试日常工作中大......
  • 【TiDB 实战】使用 HyBench 测试 TiDB
    本文将介绍如何使用HyBench对TiDB进行测试,并简述HyBench适配TiDB的注意事项。Hybench是一款由中国软件评测中心、清华大学联合牵头,多家公司共同研发的HTAP数据库基准测试工具。TiDB是一款兼容MySQL的数据库,Hybench已在Gitee开源,支持MySQL数据库,通过修改HyBe......
  • 软件测试|京东科技控股股份有限公司岗位开放~
    测试开发工程师岗位职责1、参与项目测试全流程,根据产品需求和研发设计进行需求分析和风险评估,制定测试计划,设计并执行测试用例,进行缺陷定位和跟踪修复,保障项目质量;2、项目测试环境和线上环境自动化部署工具的开发和维护;3、自动化测试工具的开发和维护,提升测试效率;4、系统或业......
  • 物流平台如何与电商平台进行自动化流程管理
    为什么要实现物流与电商平台进行自动化管理实现物流平台与电商平台的自动化流程管理对企业和消费者都有着重要的意义,比如以下几点:提高效率:自动化流程管理可以减少人为操作的错误和延误,提高订单处理和物流配送的效率。通过定义清晰的流程图和自动化工具,可以快速而准确地完成订单处理......
  • 如何进行人工智能应用的测试
    人工智能应用的测试是保证其性能和质量的重要环节。随着人工智能技术的快速发展和广泛应用,对于如何进行人工智能应用的测试也变得尤为重要。一、测试策略和方法1、功能测试 功能测试是人工智能应用测试中最基础且最重要的测试环节。它旨在验证人工智能应用是否能够按照预期功能正......
  • 网工内推 | 申通快递急招网安、测试工程师,包食宿,30k*13薪
    01申通快递招聘岗位:信息安全工程师职责描述:1、负责集团数据安全风险的识别、协同、跟踪、改进优化及事后评估;2、负责集团数据安全专项风险的治理及系统上线前的数据安全评审;3、负责集团信息安全、合规等方面制度的编写、更新、迭代;4、负责集团数据安全个人信息保护落地合规工......
  • 软件测试学习笔记丨Charles_Mock实战
    Charles_Mock实战1.电脑端抓包抓取雪球Web端搜索接口数据查看接口响应状态码与使用的协议版本查看请求参数与json格式的响应内容快速过滤雪球域名的接口进行弱网测试,选择弱网模式为256kbpsProxy→ThrottleSetting,然后选择EnableThrottling弱网前弱网后2.App抓包抓取......