『App自动化测试之Appium应用篇』| 继承于selenium常用的元素定位方法有哪些?如何使用?

简介: 『App自动化测试之Appium应用篇』| 继承于selenium常用的元素定位方法有哪些?如何使用?

1 关于APP

  • 在了解元素等位前,我们先了解下app的一些类型,只有了解这些app的类型才能针对性的选择元素定位方法;
  • 因为不同类型的app的定位方式可能存在差异性;
  • 我们了解到APP可以分为原生APPWeb APP、混合APP

    1.1 原生APP

  • 而原生APP是基于AndroidiOS平台官方的语言、类库、工具进行开发的APP
  • 这类APP的定位方式一般就只有三种,为id、class_name、Xpath

1.2 Web APP

  • Web APP一般是Web开发语言,通过浏览器运行;
  • 那么就支持selenium的常见8中元素等位方式了:
# id
# class_name
# Xpath
# name
# tag_name
# link_text
# partial_link_text
# CSS
AI 代码解读

1.3 混合APP

  • 这个其实就是用了原生APP的方法,还用到了HTML5的方法;
  • 那么这种APP就要根据实际情况来定,要么8种元素定位方法都可以用到,要么只能用到部分。

2 测试对象

2.1 获取包信息

  • 我们这里使用真机进行测试;
  • 安装包为taobao,自行下载即可;
  • 下载后查看对应的包名和活动窗口名:
aapt dump badging taobao.apk
AI 代码解读
F:\monkey_test>aapt dump badging taobao.apk
package: name='com.taobao.taobao' versionCode='609' versionName='10.31.1' compileSdkVersion='33' compileSdkVersionCodename='13'
install-location:'auto'
sdkVersion:'21'
targetSdkVersion:'33'
uses-permission: name='com.coloros.mcs.permission.RECIEVE_MCS_MESSAGE'
uses-permission: name='android.permission.READ_CONTACTS'
uses-permission: name='android.permission.CAMERA'
uses-permission: name='android.permission.INTERNET'
uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
uses-permission: name='android.permission.GET_TASKS'
uses-permission: name='android.permission.ACCESS_WIFI_STATE'
uses-permission: name='android.permission.WRITE_EXTERNA
AI 代码解读
  • 得到重要的两个信息:
appPackage='com.taobao.taobao'
appActivity='com.taobao.tao.welcome.Welcome'
AI 代码解读

2.2 真机配置

  • 手机上打开USB调试;
  • 打开USB安装;
  • 打开USB调试(安全设置);
  • 注意本文使用的是xiaomi手机。

2.3 启动服务

  • 启动appium服务:
C:\Windows\System32>appium
[Appium] Welcome to Appium v2.2.3
[Appium] Attempting to load driver uiautomator2...
[Appium] Requiring driver at C:\Users\Administrator\.appium\node_modules\appium-uiautomator2-driver
[Appium] Appium REST http interface listener started on http://0.0.0.0:4723
[Appium] You can provide the following URLs in your client code to connect to this server:
[Appium]        http://172.16.1.33:4723/
[Appium]        http://127.0.0.1:4723/ (only accessible from the same host)
[Appium]        http://172.28.128.1:4723/
[Appium] Available drivers:
[Appium]   - uiautomator2@2.34.2 (automationName 'UiAutomator2')
[Appium] No plugins have been installed. Use the "appium plugin" command to install the one(s) you want to use.
AI 代码解读

2.4 启动session

  • 脚本或打开appium-inspecotr,配置相关信息如下:
{
   
   
  "platformName": "Android",
  "appium:automationName": "uiautomator2",
  "appium:deviceName": "xxxx", # 这是设备名称,填写自己的即可
  "appium:appPackage": "com.taobao.taobao",
  "appium:appActivity": "com.taobao.tao.welcome.Welcome",
  "appium:noReset": true
}
AI 代码解读
  • 启动session后如下界面:
    在这里插入图片描述

3 元素定位

  • 关于WebAPP之前提及这个和selenium元素定位是一样的,这里可不过多介绍;
  • 这里主要了解下原生APP的常用的三种方式。

3.1 id定位

  • 这种对应方式无疑对测试人员来说是最喜欢的方式了;
  • 因为如果是不变的id属性,那么久代表了唯一性,后续不管元素的位置如何变化,属性不变,对代码的维护成本就小很多了;
  • 比如我们打开软件后,有一个同意的界面,通过appium-inspecotr可以看到元素的属性:
    在这里插入图片描述
  • 我们可以提炼出【同意】按钮的属性为:
id:com.taobao.taobao:id/provision_positive_button
AI 代码解读
  • 那我们可以使用的定位方式为id,代码如下:
driver.find_element(AppiumBy.ID, "com.taobao.taobao:id/provision_positive_button").click()
AI 代码解读

3.2 class_name定位

  • class_name就是根据元素类型进行定位;
  • 加入类型class_name比较多的话,可使用下标就行选择,比如:
driver.find_element(AppiumBy.CLASS_NAME, "content-desc")[1].click()
AI 代码解读

3.3 Xpath定位

3.3.1 id定位

  • 假如id是唯一的,比如之前我们定位的【同意】这个按钮:
    在这里插入图片描述
  • 定位方式直接写为:
driver.find_element(AppiumBy.XPATH, 
"//android.widget.TextView[@resource-
id='com.taobao.taobao:id/provision_positive_button']").click()
AI 代码解读

3.3.2 class标签定位

  • 如果class作为标签定位,那么:
driver.find_element(AppiumBy.XPATH, 
"classxxxx").click()
AI 代码解读

3.3.3 class属性定位

  • 如果class作为属性定位,那么:
    driver.find_element(AppiumBy.XPATH, 
    "//*[@class='xxxx']").click()
    
    AI 代码解读

    3.3.4 text唯一性定位

  • 如果元素的text是唯一的,直接使用text文本进行定位;
  • 定位方法为:
driver.find_element(AppiumBy.XPATH, 
"//*[@text='xxxx']").click()
AI 代码解读

3.3.5 模糊匹配法

  • 可以使用contains
  • 语法为:
driver.find_element(AppiumBy.XPATH, 
"//*[contains(@resource-id, 'xxx')]").click()

driver.find_element(AppiumBy.XPATH, 
"//*[contains(@text, 'xxx')]").click()

driver.find_element(AppiumBy.XPATH, 
"//*[contains(@class, 'xxx')]").click()
AI 代码解读

3.3.6 组合定位

  • 就是把几种定位方式结合在一起,任意进行组合;
  • 比如:
el = '//*[@text="xxx" and @index="yyy"]'
driver.find_element(AppiumBy.XPATH, el).click()
AI 代码解读

3.3.7 层级定位

  • 层级定位就是除了以上这些方法都不容易定位的时候会用到;
  • 一般使用逻辑是找这个元素的父子层级进行定位。
目录
打赏
0
0
0
0
419
分享
相关文章
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
159 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
73 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
MNN-LLM App 是阿里巴巴基于 MNN-LLM 框架开发的 Android 应用,支持多模态交互、多种主流模型选择、离线运行及性能优化。
1250 14
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
162 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
AxBench:斯坦福大学推出评估语言模型控制方法的基准测试框架
AxBench 是由斯坦福大学推出,用于评估语言模型可解释性方法的基准测试框架,支持概念检测和模型转向任务,帮助研究者系统地比较不同控制技术的有效性。
41 5
AxBench:斯坦福大学推出评估语言模型控制方法的基准测试框架
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
47 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
1688APP 原数据 API 接口的开发、应用与收益
1688作为阿里巴巴旗下的B2B平台,汇聚海量供应商和商品资源。其APP原数据API接口为开发者提供获取商品详细信息的强大工具,涵盖商品标题、价格、图片等。通过注册开放平台账号、申请API权限并调用接口,开发者可构建比价工具、供应链管理及自动化上架工具等应用,提升用户体验与运营效率,创造新的商业模式。示例代码展示了如何使用Python调用API并解析返回结果。
82 8
Mobile-Agent:通过视觉感知实现自动化手机操作,支持多应用跨平台
Mobile-Agent 是一款基于多模态大语言模型的智能代理,能够通过视觉感知自主完成复杂的移动设备操作任务,支持跨应用操作和纯视觉解决方案。
343 10
Mobile-Agent:通过视觉感知实现自动化手机操作,支持多应用跨平台
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务
CogAgent-9B 是智谱AI基于 GLM-4V-9B 训练的专用Agent任务模型,支持高分辨率图像处理和双语交互,能够预测并执行GUI操作,广泛应用于自动化任务。
140 12
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务

热门文章

最新文章

  • 1
    MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
    270
  • 2
    原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
    29
  • 3
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    12
  • 4
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    33
  • 5
    【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
    8
  • 6
    【Azure Function】Function App出现System.IO.FileNotFoundException异常
    1
  • 7
    1688APP 原数据 API 接口的开发、应用与收益
    11
  • 8
    PiliPala:开源项目真香,B站用户狂喜!这个开源APP竟能自定义主题+去广告?PiliPala隐藏功能大揭秘
    14
  • 9
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    6
  • 10
    语音app系统软件源码开发搭建新手启蒙篇
    17