标签:appium uiautomator app Uiautomator driver find android element id
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)
标签:appium,uiautomator,app,Uiautomator,driver,find,android,element,id 来源: https://www.cnblogs.com/Z-Queen/p/14894841.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。