app自动化测试----基础入门appium初使用2(Uiautomator 元素定位)

1.说明

元素定位方式有多种,Android也有自身独有的定位方式。下面就单独介绍其基于uiautomator定位元素的方法。

基本语法:driver.find_element_by_android_uiautomator(xx)

参考文档:https://developer.android.com/reference/androidx/test/uiautomator/UiSelector

 

2.appium获取app包名和activityName

app自动化测试----基础入门appium初使用2(Uiautomator 元素定位)

 app自动化测试----基础入门appium初使用2(Uiautomator 元素定位)

 

 

 

3.Uiautomator 元素定位

3.1 resourceId 属性定位

# resourceId(以下2种写法,执行效果一致,使用其中一种即可)
# driver.find_element_by_id("com.sina.weibo:id/rightBtn_wrapper").click()

driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.sina.weibo:id/titleSave")').click()

 

3.2 contenet-des属性定位

app自动化测试----基础入门appium初使用2(Uiautomator 元素定位)

# description 也是用contenet-des属性定位
# driver.find_element_by_accessibility_id("写微博").click()

driver.find_element_by_android_uiautomator('new UiSelector().description("写微博")').click()

 

3.3 组合定位

app自动化测试----基础入门appium初使用2(Uiautomator 元素定位)

# 组合定位
# driver.find_element_by_id("com.sina.weibo:id/ly_loadlocation").click()

# resourceId 和clickable组合定位
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.sina.weibo:id/ly_loadlocation").clickable(true)').click()   

其他示例:

# id与text属性组合
driver.find_element_by_android_uiautomator('resourceId("com.baidu.yuedu:id/webbooktitle").text("小说")')

# class与text属性组合
driver.find_element_by_android_uiautomator('className("android.widget.TextView").text("图书")')

 

3.4 childSelector 定位(根据父元素查找子元素

app自动化测试----基础入门appium初使用2(Uiautomator 元素定位)

# 父元素定位
driver.find_element_by_android_uiautomator('resourceId("com.baidu.yuedu:id/rl_tabs")')

# 先找到父亲,再找儿子
driver.find_element_by_android_uiautomator('resourceId("com.baidu.yuedu:id/rl_tabs").childSelector(text("小说"))')

 

3.5 兄弟定位fromParent

有时候父元素不好定位,但是跟他相邻的兄弟元素很好定位,这时候就可以通过兄弟元素,找到同一父级元素下的子元素

app自动化测试----基础入门appium初使用2(Uiautomator 元素定位)

#兄弟关系fromParent
# brother = 'resourceId("com.baidu.yuedu:id/lefttitle").fromParent(text("图书"))'

driver.find_element_by_android_uiautomator('resourceId("com.baidu.yuedu:id/lefttitle").fromParent(text("图书"))')

 

4.UiScrolleable 滚动视图窗口

UiScrolleable参考: https://developer.android.com/reference/android/support/test/uiautomator/UiScrollable.html

appium 使用说明文档:https://appium.io/docs/en/writing-running-appium/android/uiautomator-uiselector/

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction

desired_caps = {
    'platformName': 'Android',  # 测试Android系统
    'platformVersion': '7.1.2',    # Android版本 可以在手机的设置中关于手机查看
    'deviceName': '127.0.0.1:62001', # adb devices 命令查看  设置为自己的设备
    'automationName': 'UiAutomator2', # 自动化引擎
    'noReset': True, # 不要重置app的状态
    'fullReset': False, # 不要清理app的缓存数据
    'appPackage':"org.cnodejs.android.md", # 应用的包名
    'appActivity': ".ui.activity.MainActivity"   # 应用的活动页名称
}

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)

import time
# 等待页面加载成功
time.sleep(3)


scrolled = 'new UiScrollable(new UiSelector().resourceId("org.cnodejs.android.md:id/recycler_view")).flingToEnd(20)'

driver.find_element_by_android_uiautomator(scrolled)

 

上一篇:appium下载与配置


下一篇:用appium等工具写app自动化时,最好用class和id 双重定位来写代码