软件测试 app自动化02 Appium常用的元素定位工具 元素的属性 元素定位方法

2023-11-20

1 Appium常用的元素定位工具

1.1 uiautomatorviewer

在这里插入图片描述

点击,下图图标,即可连接模拟器,如下图所示:
在这里插入图片描述

点击,下图图标,即可同步模拟器操作,如下图所示:
在这里插入图片描述
此时,可以通过元素的resource-id属性来定位该元素。

若出现报错,则执行下面操作:
进入任务管理器,停止adb.exe,然后在dos界面输入adb connect 127.0.0.1:62001,再输入adb devices后,再点击uiautomatorview.bat文件去运行。

1.2 Appium Inspector

Appium server工具自带的定位工具
Appium server需要下载Appium Inspector程序,下载地址如下:

https://github.com/appium/appium-inspector/releases

下载程序,如下图所示:
在这里插入图片描述
安装成功如下图的图标:
在这里插入图片描述
双击使用Appium Inspector,Remote Path 填写/wd/hub,并且还是相关的参数,如下图所示:
在这里插入图片描述
点击【start session】按钮,成功进入页面,如下图所示:
在这里插入图片描述

1.3 Weditor

Uiautomator2 Python第三方库 appUI自动化测试框架
在dos命令窗口输入3条命令:

pip install Uiautomator2
python -m Uiautomator2 init
pip install weditor

确认工具是否安装成功,输入命令 weditor --help

Weditor工具的使用
(1)启动weditor工具
(2)选择操作系统,填写设备名称,点击连接
(3)开的定位元素,获取元素信息
(4)在dos窗口使用快捷键ctrl+c,退出weditor

2 元素的属性

(1)resourceid属性
(2)class/classname 元素标签名属性
(3)text 文本内容
(4)description或content-desc属性
(5)xpath属性
(6)appPackage属性
(7)appActivity属性

3 元素定位方法

(1)取出resourceid属性值使用find_element(By.id,xxx)或find_element(MobileBy.ID,xxx)来定位元素。
例子如下:

from appium.webdriver.common.mobileby import MobileBy
from appium import webdriver
desired_caps = {
    'automationName':'UiAutomator2',
    'platformName':'Android',# 指定操作系统
    'platformVersion':'7.1.2', # 指定系统版本
    'deviceName':'127.0.0.1:62001', # 指定设备名称
    'appPackage':'com.tal.kaoyan', # 被操作的应用程序包名
    'appActivity':'com.tal.kaoyan.ui.activity.SplashActivity', # 启动页面
    'noReset':'true' #true 不重置 flase 重置
}
#发送指令给appium server
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
#拿出id属性值,使用MobileBy.ID方法定位
username_el = driver.find_element(MobileBy.ID,"com.tal.kaoyan:id/login_email_edittext")
username_el.send_keys("2121211212")
time.sleep(2)
username_el.clear()
time.sleep(2)
#拿出id属性值,使用By.ID方法定位
username_el_2 = driver.find_element(By.ID,"com.tal.kaoyan:id/login_email_edittext")
username_el_2.send_keys("2121211212")
time.sleep(2)
username_el_2.clear()
time.sleep(2)

分析上述代码:
MobileBy.ID取出id属性值,定位用户框。此外还可以使用By.ID取出id属性值,定位用户框。

(2)取出text属性值使用MobileBy.ANDROID_UIAUTOMATOR,这种定位方式利用系统自带框架(Uiautomator1/Uiautomator2)实现元素定位,基于java代码编写,通过这些框架实现元素定位,实质就是调用这些框架里面的方法(UiSelector类实现元素定位)。
例子如下:

# 拿出text属性值使用MobileBy.ANDROID_UIAUTOMATOR
username_el_3 = driver.find_element(MobileBy.ANDROID_UIAUTOMATOR,'new UiSelector().text("请输入用户名")')
username_el_3.send_keys("123")
time.sleep(2)
username_el_3.clear()
time.sleep(2)

分析上述代码:
UiSelector类里面的方法,如果参数是字符串类型,必须是双引号 例如:text(“请输入用户名”)
使用UiSelector类需要实例化
此外还可以多个属性组合定位 new UiSelector().方法1().方法2().方法3(),如下代码:

username_el_4 = driver.find_element(MobileBy.ANDROID_UIAUTOMATOR,'new UiSelector().className("android.widget.EditText").resourceId("com.tal.kaoyan:id/login_email_edittext")')
username_el_4.send_keys("123123")
time.sleep(2)
username_el_4.clear()
time.sleep(2)

(3)取出description/content-desc属性值定位
例子,使用description/content-desc属性值定位QQ应用程序的账号文本框,代码如下:

import time
from appium import webdriver
from appium.webdriver.common.mobileby import MobileBy
# 设置操控终端的配置参数
desired_caps = {
    'automationName':'UiAutomator2',
    'platformName':'Android',# 指定操作系统
    'platformVersion':'7.1.2', # 指定系统版本
    'deviceName':'127.0.0.1:62001', # 指定设备名称
    'appPackage':'com.tencent.mobileqq', # 被操作的应用程序包名
    'appActivity':'com.tencent.mobileqq.activity.SplashActivity', # 启动页面
    'noReset':'true' #true 不重置 ;flase 重置
}
# 发送指令给appium server
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
# 定位登录按钮
login_button = driver.find_element(MobileBy.ID,'com.tencent.mobileqq:id/btn_login')
# 点击登录按钮
login_button.click()
time.sleep(2)

# 取出description/content-desc属性值定位
ele1 = driver.find_element(MobileBy.ACCESSIBILITY_ID,"请输入QQ号码或手机或邮箱")
ele1.send_keys("123")
time.sleep(2)

分析上述代码:
首先获取QQ应用程序的包名和启动页面,然后使用MobileBy.ID定位【登录】按钮,最后使用MobileBy.ACCESSIBILITY_ID定位用户名文本框。

(4)选择xpath定位
例子,使用xpath定位定位考研帮app用户名文本框,代码如下:

import time

from appium import webdriver
from appium.webdriver.common.mobileby import MobileBy

# 设置操控终端的配置参数
desired_caps = {
    'automationName':'UiAutomator2',
    'platformName':'Android',# 指定操作系统
    'platformVersion':'7.1.2', # 指定系统版本
    'deviceName':'127.0.0.1:62001', # 指定设备名称
    'appPackage':'com.tal.kaoyan', # 被操作的应用程序包名
    'appActivity':'com.tal.kaoyan.ui.activity.SplashActivity', # 启动页面
    'noReset':'true' #true 不重置 ;flase 重置
}
# 发送指令给appium server
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
# 定位用户名文本框
username_ele= driver.find_element(MobileBy.XPATH,'/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.EditText[1]')
username_ele.send_keys("123")
time.sleep(2)

分析上述代码:
通过appium spector工具定位用户名文本框,找到对应的xpath值,如下图所示:
在这里插入图片描述

小结

1 Appium常用的元素定位工具有三个,Android sdk\tools目录下的uiautomatorviewer.bat、appium Inspactor和Weditor。
2 根据id属性值、xpath值、text 文本内容、description或content-desc值来定位
3 在find_element()方法选择MobileBy.ID、By.ID、MobileBy.XPATH、MobileBy.ANDROID_UIAUTOMATOR、MobileBy.ACCESSIBILITY_ID作为参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件测试 app自动化02 Appium常用的元素定位工具 元素的属性 元素定位方法 的相关文章

  • Python浪漫七夕:可爱的卡通图案合集分享

    一个浪漫的日子 七夕 每个学科都有属于自己的浪漫 理工科的程序员们被大众普遍认为是直男直女 但其实我们才是最浪漫的 还不抓住机会展现一把 用专属于程序员的烂漫锁住爱 下面是我搜集到的一些Python绘制可爱的卡通图代码 我写成合集分享给大家
  • Java----AWT组件开发和Swing界面编程(一)

    一 AWT组件开发 1 AWT入门 AWT是抽象窗口工具箱的缩写 它为编写图形用户界面提供了用户接口 通过这个接口就可以继承很多方法 省去了很多工作 AWT还能使应用程序更好地同用户进行交互 AWT中的容器是一种特殊的组件 他可以包含其他组
  • STM32CubeMX HAL库串口+DMA+IDLE空闲中断不定长度数据接收和发送

    本文开发环境 MCU型号 STM32F103ZET6 IDE环境 MDK 5 29 代码生成工具 STM32CubeMx 5 3 0 HAL库版本 STM32Cube FW F1 V1 8 0 STM32Cube MCU Package f

随机推荐

  • 【转】Linux---centos安装配置并挂载NFS

    转自 http blog csdn net loyachen article details 51010688 系统环境 CentOS release 6 7 Final 服务端配置 1 安装nfs utils和rpcbind yum in
  • oracle批量修改某个字段的值的一部分

    有个字段是id aaa10 aaa12 aaa13 要改成 kkk10 kkk12 kkk13 UPDATE tablename SET id REPLACE id aaa kkk
  • Java与C#一些区别(学习笔记)

    一 基础语法 1 Console表示控制台 2 输入 Console ReadLine 格式 string name name Console ReadLine 3 输出 Console WriteLine 这个自带换行 Console W
  • Vscode中Python无法将pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

    在Python需要pip下载插件时报错 是因为没有把Python安装路径下的Scripts添加到系统的path路径中 设置完之后重新启动Vscode就可以使用pip了
  • [需求管理-4]:需求分析全过程:需求分析+资源评估+项目计划

    前言 需求收集后 需要经过漫长的需求分析和所需要评估过程 才能正式在某个软件版本中实现需求 在软件开发人员通过编程实现需求前 中间经过了多种角色的辛苦劳动 最终才会生成需要规格说明书 需求规格说明书是逐步由粗到细的分解过程 一个需求 要进入
  • Postgresql vacuum 和 vacuum full

    转载自 https www modb pro db 63663 dead tuples tuple 元组 也就是一行数据 首先 简要解释什么是 死元组 和 膨胀 当您在PostgreSQL中执行DELETE时 行不会立即从数据文件中删除 而
  • 11.面向对象概述,类的创建,对象的创建

    一 面向对象程序设计概述 1 知识点面向对象程序设计的目的 1 从程序设计的角度来看 事物的属性就可以用变量来表示 行为则可以用方法来反映 2 客观世界中事物的属性和行为可以进行传递 当某一个事物得到另一个事物传给它的属性和行为 我们就说该
  • 证书 vivo_vivo官宣首款商用5G手机iQOO Pro,8月上市

    环球网科技综合报道 7月30日 vivo子品牌iQOO通过官微宣布支持5G网络的iQOO Pro将于8月发布 即vivo首款商用5G手机将是iQOO Pro iQOO自发布之初便备受关注 首款产品以游戏手机的定位切入市场对当时首批商用高通骁
  • 优雅,在SpringBoot项目中一键轻松接入ChartGPT

    最近体验了火爆全网的 ChartGPT 深刻体会了其强大的能力 这让我们程序猿对AI的未来突然有了广大的畅想空间 我也在网上看到不少大牛通过 ChartGPT 来获取收益 就寻思着能否自己接入 ChartGPT 的 API 来做些什么事情
  • Linux宝塔面板命令大全,快速学会

    cd www server panel python tools py panel 123456 查看宝塔日志 cat tmp panelBoot pl 查看软件安装日志 cat tmp panelExec log 站点配置文件位置 www
  • AppsFlyer 研究(三)OneLink平台归因、跳转、深度链接

    一 OneLink 简介 OneLink是AppsFlyer的对平台归因 跳转和深度链接的解决方案 OneLink在设备点击时检测到设备类型 并将用户重定向到匹配的目的地 例如Google Play商店 iOS应用商店 第三方应用商店 或者
  • "我为区块链赋能实体经济代言"第二批代言人:复旦大学张江研究院教授陈文君

    我为区块链赋能实体经济代言 推出以来 颇受行业关注 为进一步规范行业发展 落实区块链赋能实体经济的目标 为行业发展 正本清源而发声 新一轮的 我为区块链赋能实体经济代言 于9月3日重磅启动 我为区块链赋能实体经济代言100人第二批 第3位代
  • JPEG编码原理与解码分析

    JPEG编码原理 JPEG Joint Photographic Experts Group 是JPEG标准的产物 该标准由国际标准化组织 ISO 制订 是面向连续色调静止图像的一种压缩标准 JPEG格式是最常用的图像文件格式 后缀名为 j
  • 数据挖掘—数据预处理

    文章目录 数据预处理 1 数据清洗 缺失值处理 异常值处理 2 数据集成 实体识别 冗余属性识别 数据变换 简单函数变换 规范化 连续属性离散化 属性构造 3 数据规约 属性归约 数值归约 Python主要数据预处理函数 数据预处理 数据预
  • 【uniapp】使用canvas组件编译到微信小程序兼容出错问题

    使用uniapp编译跨平台项目会遇到不少兼容问题 这里主要讲canvas组件的 编译到微信小程序会有兼容出错问题 这里给讲一下解决方案 希望有帮助 常见问题 draw无法绘制图形 如果使用CanvasContext绘制 以下代码 编译到微信
  • 值得收藏的UmiJS 教程

    点击上方关注 前端技术江湖 一起学习 天天进步 前言 网上的umi教程是真的少 很多人都只写了一点点 很多水文 所以打算自己写一篇 自己搭建umi 并封装了一下常用的功能 并用到公司实际项目中 umi介绍 Umi 是什么 Umi 中文可发音
  • maven学习笔记 maven的使用

    新建maven项目 使用mvn archetype generate命令新建一个maven项目 maven会自动下载必要的插件 还会下载一个所有项目模板的分类文件 这个文件有好几兆的大小 因此可能会持续比较长的时间 下载完毕之后 就会列出所
  • JAVA 8 新特性及使用

    1 前言 2019年9月19日java13已正式发布 感叹java社区强大 经久不衰 由于国内偏保守 新东西总要放一放 让其他人踩踩坑 等稳定了才会去用 并且企业目的还是赚钱 更不会因为一个新特性去重构代码 再开发一套程序出来 甚者国内大多
  • 不一样的联宇益通,不一样的SD-WAN+

    点击上方 中国云报 可关注 笔者有点挠头 究竟该用哪个词来描述联宇益通 Netpas 公司呢 低调 技术控 特立独行 还是自得其乐 似乎都有些影子 但又都不是最准确的表达 与联宇益通创始人兼CEO谢毅斌聊得越深入 感觉联宇益通身上矛盾的地方
  • 软件测试 app自动化02 Appium常用的元素定位工具 元素的属性 元素定位方法

    文章目录 1 Appium常用的元素定位工具 1 1 uiautomatorviewer 1 2 Appium Inspector 1 3 Weditor 2 元素的属性 3 元素定位方法 小结 1 Appium常用的元素定位工具 1 1