uiautomatorviewer.bat
连接真机时,提示以下报错:
Android13
,但是自带的uiautomatorviewer
不支持Android8.0
之后的操作系统了。uiautomatorviewer
,本文试过了安卓9.0可以,但是安卓13是不行的;uiautomatorviewer.jar
和 uiautomatorviewer.jar2
属于同一个文件只是页面功能略有不同,一次只可使用一个,不管下载那个最后必须重命名为uiautomatorviewer.jar
;SDK
目录的D:\android-sdk-windows\tools\lib
目录下,找到老的uiautomatorviewer.jar
重新命名uiautomatorviewer.zip
或者移动到其他地方去;uiautomatorviewer.jar 、uiautomatorviewer.jar2
复制到D:\android-sdk-windows\tools\lib
目录下:
LvmamaXmlKit.jar
上传到手机:F:\monkey_test>adb push LvmamaXmlKit.jar /sdcard/
LvmamaXmlKit.jar: 1 file pushed, 0 skipped. 0.0 MB/s (1118 bytes in 0.027s)
uix
文件,保存到手机中:adb shell uiautomator dump /sdcard/an.uix
uix
文件下载到本地:adb pull /sdcard/an.uix
png
文件,保存到手机中:adb shell screencap -p /sdcard/an.png
png
文件下载到本地:adb pull /sdcard/an.png
uiautomatorviewer
后,导入这两个本地文件即可:
accessibility_id
定位主要使用的是元素的content-desc
内容;content-desc
主要是针对的是Android
;iOS
上用的是label
或name
属性;accessibility_id
定位方式方式直接使用的方法是:AppiumBy.ACCESSIBILITY_ID
class AppiumBy(By):
IOS_PREDICATE = '-ios predicate string'
IOS_UIAUTOMATION = '-ios uiautomation'
IOS_CLASS_CHAIN = '-ios class chain'
ANDROID_UIAUTOMATOR = '-android uiautomator'
ANDROID_VIEWTAG = '-android viewtag'
ANDROID_DATA_MATCHER = '-android datamatcher'
ANDROID_VIEW_MATCHER = '-android viewmatcher'
# Deprecated
WINDOWS_UI_AUTOMATION = '-windows uiautomation'
ACCESSIBILITY_ID = 'accessibility id' # 用的是这个
IMAGE = '-image'
CUSTOM = '-custom'
driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Browser").click()
bounds
属性;uiautomatorviewer
的最后一行:
bounds
坐标定位方式为:driver.tap()
tap()
使用如下: def tap(self, positions: List[Tuple[int, int]], duration: Optional[int] = None) -> 'WebDriver':
"""Taps on an particular place with up to five fingers, holding for a
certain time
Args:
positions: an array of tuples representing the x/y coordinates of
the fingers to tap. Length can be up to five.
duration: length of time to tap, in ms
Usage:
driver.tap([(100, 20), (100, 60), (100, 100)], 500)
Returns:
Union['WebDriver', 'ActionHelpers']: Self instance
"""
driver.tap([(605,1022), (739,1178)], duration=50)
uiautomator
是Android
原生的定位方式;xpath
差不多,支持元素的全部属性定位;driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, "xxx")
UiSelector
对象。UiSelector
对象可以参考:UiSelector;UiSelector
对象API
有以下内容:API | 说明 |
---|---|
| 设置搜索条件以匹配当前选中的小部件(通常用于复选框) |
| 将子 |
| 设置搜索条件以匹配小部件的类属性(例如, |
| 设置搜索条件以匹配小部件的类属性(例如, |
| 设置搜索条件以匹配小部件的类属性(例如, |
| 设置搜索条件以匹配可单击的小部件 |
| 设置搜索条件以匹配小部件的内容描述属性 |
| 设置搜索条件以匹配小部件的内容描述属性 |
| 设置搜索条件以匹配小部件的内容描述属性 |
| 设置搜索条件以匹配小部件的内容描述属性 |
| 设置搜索条件以匹配已启用的小部件 |
| 设置搜索条件以匹配可聚焦的小部件 |
| 设置搜索条件以匹配具有焦点的小部件 |
| 将子 |
| 设置搜索条件,以通过布局层次结构中的节点索引匹配小部件 |
| 设置搜索条件以按小部件的实例号匹配小部件 |
| 设置搜索条件以匹配可长时间单击的小部件 |
| 设置搜索条件以匹配包含小部件的应用程序的包名称 |
| 设置搜索条件以匹配包含小部件的应用程序的包名称 |
| 设置搜索条件以匹配可滚动的小部件 |
| 设置搜索条件以匹配当前选择的小部件 |
| 设置搜索条件以匹配小部件显示的可见文本(例如,启动应用程序的文本标签) |
| 设置搜索条件以匹配小部件显示的可见文本(例如,启动应用程序的文本标签) |
| 设置搜索条件以匹配小部件显示的可见文本(例如,启动应用程序的文本标签) |
|
|
text
有四种,详见上边提到的API
;新增
,我们使用text
定位:add_text = 'new UiSelector().text("新增")'
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, add_text).click()
add_text01 = 'new UiSelector().textContains("新")'
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, add_text01).click()
resourceID
整个内容,而不是属性名;id_ele = 'resourceId("com.taobao.taobao:id/provision_positive_button")'
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, id_ele).click()
className
、组合定位、父子定位等。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。