参考:
https://developer.android.com/reference/androidx/test/uiautomator/UiSelector
对应 uiautomator 中的方法
主要就是根据定位到元素属性和使用对用的Java API进行元素定位
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time
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':"com.sina.weibo", # 应用的包名
'appActivity': ".SplashActivity" # 应用的活动页名称
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)
time.sleep(6)
# 点击 + 号
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.sina.weibo:id/titleSave")').click()
time.sleep(1)
driver.find_element_by_android_uiautomator('new UiSelector().description("写微博")').click()
time.sleep(1)
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.sina.weibo:id/tv_location_ly").clickable(true)').click()
childSelector 根据父元素查找子元素
UiSelector | childSelector)(UiSelector selector) Adds a child UiSelector criteria to this selector. |
---|---|
父元素的定位是
new UiSelector().resourceId("org.cnodejs.android.md:id/toolbar")
通过调用child方法来定位子元素
new UiSelector().resourceId("org.cnodejs.android.md:id/toolbar").childSelector(new UiSelector().className("android.widget.ImageButton"))
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)