APP自动化测试(6)-元素定位by_android_uiautomator

本文详细介绍了如何使用UiAutomator进行Android App的自动化测试元素定位,包括text、resource-id、className等属性的使用,以及fromParent、childSelector、index和instance等方法,提供代码示例展示各种定位策略。
摘要由CSDN通过智能技术生成

        

目录

1、利用text属性进行定位

2、利用resource-id属性进行定位

3、利用className属性进行定位

4、多个元素属性结合使用

5、description属性:

6、fromParent:兄弟定位

7.childSelector:父子定位

8、index:序列【其父元素的第几个节点】

9 instance:实例【所有结果 里面的第几个元素】


上一篇我们利用appium完成了元素定位,除了appium外用UiAutomator也可以实现元素定位。不过UiAutomator只能用于Android系统,无法兼容IOS。find_element_by_android_uiautomator

        同样由于新版本不支持find_element_by_android_uiautomator,我们用find_element(By.ANDROID_UIAUTOMATOR,value)和find_elements(By.ANDROID_UIAUTOMATOR,value)来实现元素定位。我们分别对常用的属性值进行说明。

1、利用text属性进行定位

text属性如果可以唯一定位到元素的话使用起来非常方便,测试人员可以非常简单地识别出text属性的值,如果做封装都可以不用元素定位工具直接输入text值就行了。用text属性要注意,如果有空格容易把空格落下,千万要将空格一块复制过来。

对于text属性可以用如下几个方法

text:输入的值就是text中的值

textContains:元素text值包含输入的值

textStartsWith:元素的text值以输入的值开头

textMatches:正则表达式匹配,输入的值匹配text值

如下图,我们用uiautomatorviewer进行定位,记一笔按钮的text值是“记一笔”

 我们通过text属性值来实现元素定位,代码实现定位到该元素,并打印出text值


'''
通过UIAUTOMATOR的text属性定位到元素,并打印文本
'''
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
import time
# For W3C actions
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver.common.actions.pointer_input import PointerInput

caps = {}
caps["platformName"] = "Android"
caps["appium:platfformVersion"] = "11"
caps["appium:deviceName"] = "OFYDHUCIPN8PHEBI"
caps["appium:appPackage"] = "com.mymoney"
caps["appium:appActivity"] = "com.mymoney.biz.main.v12.MainActivityV12"
caps["appium:noReset"] = True
caps["appium:noSign"] = True
caps["appium:unicodeKeyboard"] = True
caps["appium:resetKeyboard"] = True
caps["appium:ensureWebviewsHavePages"] = True
caps["appium:nativeWebScreenshot"] = True
caps["appium:newCommandTimeout"] = 3600
caps["appium:connectHardwareKeyboard"] = True

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
#以上代码从Session Information复制,直接使用


#通过text属性实现元素定位
#text属性全匹配
add_trans_btn_1 = driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,('text("记一笔")'))
#打印所有定位到元素的文本
print ("通过text属性定位到元素的文本为:",add_trans_btn_1.text)
#通过textContains实现元素定位
add_trans_btn_2 = driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,('textContains("一笔")'))
#打印所有定位到元素的文本
print ("通过textContains定位到元素的文本为:",add_trans_btn_2.text)

#通过textStartsWith实现元素定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六天测试工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值