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

Posted Z_Study

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

 

 

 

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属性定位

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

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

 

3.3 组合定位

# 组合定位
# 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 定位(根据父元素查找子元素

# 父元素定位
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

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

#兄弟关系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)

 

以上是关于app自动化测试----基础入门appium初使用2(Uiautomator 元素定位)的主要内容,如果未能解决你的问题,请参考以下文章

appium入门级教程—— 安装Appium-Server

JAVA Appium自动化测试入门

基于appium的安卓自动化测试初长成

〖Python APP 自动化测试实战篇⑧〗- 实战 - appium 模拟手机滑动操控的操作

二 APPIUM Android自动化 测试初体验

三 APPIUM Android自动化 测试初体验