Appium元素定位(二):UiAutomator定位

news/2024/2/21 21:55:14

UiAutomator定位用于Android APP的元素定位,使用UI Automator API(UISelector类)来搜索特定元素。 Appium将Java代码作为字符串发送到服务器实现对应用程序的交互。

目录

  • uiautomator定位方式
    • resource-id定位
    • classname定位
    • content-desc定位
    • 通过文本定位
    • 组合定位
    • 父子元素、兄弟元素定位
      • 父子关系定位 childSelector
      • 兄弟定位 fromParent
    • 滚动查找元素
  • uiautomator定位实例
  • 系列文章

UiAutomator是android的工作引擎,所以定位速度快。缺点是语法表达式复杂,容易写错。

官方文档:https://developer.android.com/reference/android/support/test/uiautomator/UiSelector

下面将介绍UiSelector类一些常用接口使用方法。

uiautomator定位方式

resource-id定位

  • new UiSelector().resourceld("id")

classname定位

  • new UiSelector().className("className")

content-desc定位

  • new UiSelector().description("contenet-desc属性")

通过文本定位

  • text文本定位
    • new UiSelector().text("text文本")
  • textContains 模糊匹配
    • new UiSelector().textContains("包含text文本")
  • textStartsWith,以某个文本开头来匹配
    • new UiSelector().textStartsWith("以text文本开头")
  • 正则表达式 textMatches 匹配
    • new UiSelector().textMatches("正则表达式")

组合定位

  • id与text属性组合
    id_text = 'resourceld("com.baidu.yuedu:id/webbooktitle").text("textname")'
    driver.find_element_by_android_uiautomator(id_text).click()
    
  • class与text属性组合
    class_text='className("android.widget.TextView").text("textname")'
    driver.find_element_by_android_uiautomator(class_text).click()
    

父子元素、兄弟元素定位

父子关系定位 childSelector

通过父元素找儿子元素

son = 'resourceld("com.baidu.yuedu:id/rl_tabs").childSelector(text("股票"))'

兄弟定位 fromParent

通过相邻的兄弟元素定位,通过兄弟元素,找到同一父级元素下的子元素

brother = 'resourceld("com.baidu.yuedu:id/lefttitle").fromParent(text("用户"))'

滚动查找元素

'new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(newUiSelector().text("查找的文本").instance(0));'

uiautomator定位实例

跟 App自动化测试 | Appium元素定位(一)的测试过程一样,判断股票价格
测试过程:

  1. 打开雪球app
  2. 点击搜索框
  3. 输入"招商银行"
  4. 选择
  5. 获取股价,并判断
import pytest
from appium import webdriverclass TestUiautomator:def setup(self):desired_caps = {}desired_caps['platformName'] = 'Android'desired_caps['platformVersion'] = '6.0.1'desired_caps['deviceName'] = '127.0.0.1:7555'desired_caps['appPackage'] = 'com.xueqiu.android'desired_caps['automationName'] = 'Uiautomator2'desired_caps['appActivity'] = 'com.xueqiu.android.common.MainActivity'desired_caps['newCommandTimeout'] = 3000desired_caps['noReset'] = Truedesired_caps['dontStopAppOnReset'] = Truedesired_caps['skipDeviceInitialization'] = Truedesired_caps['unicodeKeyboard'] = Truedesired_caps['resetKeybBoard'] = Trueself.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)self.driver.implicitly_wait(15)def teardown_method(self):self.driver.quit()def test_search(self, searchkey, type, price):self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.xueqiu.android:id/tv_search")').click()self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.xueqiu.android:id/search_input_text")').send_keys("招商银行")self.driver.find_element_by_android_uiautomator('new UiSelector().text("SH600036")').click()self.driver.find_element_by_android_uiautomator('new UiSelector().text("SH600036")').click()current_price = self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.xueqiu.android:id/stock_current_price")').textprint(current_price)assert float(current_price) > 40

执行结果:

--THE END--

系列文章

1、Appium 介绍及环境安装
2、selenium/appium 等待方式介绍
3、App控件定位:Android 控件介绍及元素定位方法
4、Appium元素定位(一)
5、Appium元素定位(二):UiAutomator定位
6、Appium控件交互
7、Android WebView测试
8、AppCrawler自动遍历测试
9、自动遍历测试之Monkey工具
10、App自动化测试工具Uiautomator2
11、App自动化测试工具Airtest
12、Android手机管理平台搭建:STF和atxserver2
13、Windows上实现iOS APP自动化测试:tidevice + WDA + facebook-wda / appium
14、iOS APP自动化:predicate定位
15、iOS APP自动化:class chain定位方法
16、使用facebook-wda进行iOS APP自动化测试


欢迎关注公众号:「测试开发小记」及时接收最新技术文章!


https://dhexx.cn/news/show-25403.html

相关文章

vs12 vs2013下open3.0配置扩展模块

在使用人脸识别face.hpp的时候,如果直接在opencv官网下载的已编译好的.exe安装的话将没有扩展库的功能,如果要使用扩展库,必须要进行扩展库的编译。 1、准备资源 opencv未编译版: https://github.com/Itseez/opencv opencv扩展…

基于Python的图片隐写算法设计与实现

目 录 摘 要 1 第一章 绪论 2 1.1 研究背景 2 1.1.1 信息隐藏技术 2 1.1.2 图像格式 2 1.1.3 信息隐写的国内外发展 3 1.2 研究意义 3 1.3 本文研究的主要内容 3 第二章 理论研究与分析 4 2.1 图像隐写术 4 2.1.1 图像隐写术 4 2.1.2 图像隐写的流程 4 2.2图像隐写算法 5 2.2.1…

Linux三剑客grep、awk和sed

grep,sed 和 awk是Linux/Unix 系统中常用的三个文本处理的命令行工具,称为文本处理三剑客。本文将简要介绍这三个命令的基本用法以及它们在Windows系统中的使用方法。 目录管道grep定义选项参数实例1:查找文件内容,显示行号实例2&…

基于html的旅游网站的设计与实现

目 录 第一章 绪论 1 1.1. 选题背景及意义 1 1.2. 国内外研究现状 1 1.3. 研究主要内容 2 第二章 开发工具的选用及介绍 3 2.1. 网页开发技术 3 2.1.1. HTML简介 3 2.1.2. DIVCSS简介 3 2.1.3. bootstrap 3 2.2. 网页制作工具 4 2.2.1. Photoshop 4 2.2.2. Dreamweaver 4 2.2.3…

Appium控件交互

与Web元素操作一样(参考Selenium Web元素操作),定位到APP控件元素后,可以对控件进行一系列的操作,实现与APP交互,比如点击、文本输入、元素属性获取等。 目录元素操作元素常用操作方法Python测试实例元素属…

基于PLC的棒料自动上料车削加工装置设计

目 录 1 绪论 1 1.1自动上下料机现状 1 1.2设计目的 1 1.3 国内外研究方向 2 1.4 设计原则 2 2 棒料自动上料车削加工装置方案设计 3 2.1自动上料车削加工装置的总体设计 3 2.1.1 车削加工装置总体结构的类型 3 2.1.2 设计具体采用方案 4 2.2 车削加工装置腰座结构的设计 4 2.…

Android WebView测试

混合应用中包含 Web 视图的应用,在 Appium 介绍及环境安装 中介绍了appium支持WebView测试,本文将分享Android 混合页面的测试方法。 目录WebView测试环境准备手机端PC端查看手机浏览器版本查看手机webview版本客户端代码WebView元素定位Android混合页面…

人脸识别(四)

源码位置:https://github.com/comhaqs/face_find.git 分支: develop_face_recognition opencv的人脸识别模块现在是放在另外一个库opencv_contrib里,需要编译到opencv里才可以使用,故这里将opencv和opencv_contrib的源码都下下来…

基于RFID的学生一卡通管理系统的设计与实现

目 录 摘 要 I ABSTRACT II 第1章 绪论 1 1.1选题背景及意义 1 1.2国内外研究现状 1 1.3研究主要内容 2 第2章 系统设计 4 2.1需求分析 4 2.1.1可行性分析 4 2.1.2功能需求概述 5 2.1.3 UML用例图 5 2.2学生一卡通的基本组成结构 7 2.2.1天线 7 2.2.2阅读器 7 2.2.3电子标签 11…

自动遍历测试之Monkey工具

某些移动APP业务线多,流程复杂,且产品迭代速度快,在回归测试中涉及到大量用例,工作量大,解决这个问题的一个可行方法是使用自动遍历测试,可以降低用例维护成本,尽可能的自动化覆盖回归业务。 目…