自动化工具 自动遍历工具 UICrawler 使用记录

小马 · June 05, 2018 · Last by Justin replied at November 09, 2019 · 12289 hits

一 使用目的

该工具主要是基于appium,可以面向Android和Ios移动App,或H5或微信等应用的,基于元素识别的UI自动化遍历测试.
该工具特点:
1.支持最新的appium 1.8.1 (AppCrawler支持1.7.0)
2.安卓方向支持monkey配置遍历.
3.结果报告上看,支持Crash信息搜集.会对操作过程录制视频.会对操作过程每动作截图.
其他优质特性详见github主页说明

二 资源索引

官方资源

UICrawler Github
UICrawler 配置文件说明
UICrawler 环境配置说明

博客相关

基于 Appium 的 App UI 遍历工具 (支持操作步骤回放)
网盘下载链接

三 环境准备

以安卓方向取重点:

Oracle Java部署

下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html
找到合适的java版本下载,我选择的是jdk-8u91-windows-x64.exe。按步骤安装即可。安装路径一般默认。

配置java 环境变量:
JAVA_HOME 变量值为JDK的安装目录,笔者为C:\Program Files\Java\jdk1.8.0_91
PATH PATH变量值后追加 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH 变量值为 ;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

检查是否安装成功

C:\Users\cmd>java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b15, mixed mode)

Android sdk部署

下载地址 android-sdk_r24.4.1-windows 处下载 android-sdk_r24.4.1-windows.zip
将android-sdk-windows解压到你需要的目录下,笔者是D:\Android\android-sdk-windows

配置android-sdk环境变量:
ANDROID_HOME 变量值为android-sdk的解压目录,笔者为D:\Android\android-sdk-windows
PATH PATH变量值的最后追加 ;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\build-tools;

接下来你便可以用D:\Android\android-sdk-windows 下的SDK Manager.exe下载配置SDK 或AVD Manager.exe 配置 AVD模拟器了。
如果你需要测试android应用的话,请先安装配置好某一版本的SDK及其相关工具。
如下图,SDK manager必要配置:
Tools->Options设置:

其它要下载的:
我目前的配置是

此处的按需选择与AVD模拟器配套使用的:

#检查下最终的adb版本
C:\Users\cmd>adb version
Android Debug Bridge version 1.0.39
Version 0.0.1-4500957
Installed as D:\Android\android-sdk-windows\platform-tools\adb.exe

appium部署

可以用两种方式:
一种就是直接用desktop版本, appium-desktop
一种就是nodejs部署参考,教您完美 win10 安装 Appium1.7.2 支持 win 客户端自动化
(建议使用nodejs部署方式,该文可以完美安装当然你不做winuiauto的话可以忽略文中提到的那些winuiauto相关的报错)

手机真机相关设置

真机小米Mix2
需要开启真机开发者选项->USB调试,模式和其他相关,主要是调试这一栏要打开的有


哦,还有就是接上手机的时候,小米Mix会提示选择"USB用途" (有 1 仅限充电 2 传输文件MTP 3传输照片 PTP) 你需要选择 传输文件MTP 该项.否则 adb devices -l会报一个类似权限未获取到的提示.

部署UICrawler相关

目前尚未完全开源,可以直接去网盘下载UICrawler-2.0.jar和config.yml 到本地磁盘即可.
我是先 git clone https://github.com/lgxqf/UICrawler.git 然后将上述下载的文件放入.

先通过自带的-h 命令检查UICrawler-2.0 是否正常

D:\UICrawler>java -jar UICrawler-2.0.jar -h
15:32:08.083 [main] INFO Crawler - -h Print this usage information
-a Android package's main activity
-b iOS bundle id
-c Maximum click count
-f Yaml config file
-m run monkey
-p Android package name
-t Appium port
-u Device serial
-w wda port for ios

四 配置修改

config.yml 用文本编辑器打开,个人推荐win环境用Notepad++,ubuntu环境用Notepadqq.
并且打开"显示所有字符",以便查看是否符合yml文件编辑格式规范,空格 回车换行符什么的.

配置参考:
YAML 语言格式
XPath 教程

附上最终修改后配置:

GENERAL:
#截屏数量
SCREENSHOT_COUNT: 500
#Crash时截图显示步骤数量
CRASH_PIC_COUNT: 5
#遍历深度
MAX_DEPTH: 2000
#点击次数
MAX_CLICK_COUNT: 100000
#TIME
DEFAULT_WAIT_SEC: 10
#查找元素的间隔时间
DEFAULT_POLLING_INTERVAL_SEC: 5


DEFAULT_VALUE:
#Appium server IP 0.0.0.0代表Server在本地
APPIUM_SERVER_IP: 0.0.0.0
#Appium端口
PORT: 4723
#IOS 才会用到WDA_PORT
IOS_WDA_PORT: 8001
#是否忽略Crash,设为true,crash后会重启app然后继续遍历
IGNORE_CRASH: true
ENABLE_VERTICAL_SWIPE: true

#设置MONKEY事件百分比 各事件百分比之和为100
MONKEY:
#运行时间,以分钟计
MONKEY_RUNNING_TIME: 6
#以下各项值总和需为100
#滑动事件百分比
SWIPE_RATIO: 10
#点击事件百分比
CLICK_RATIO: 80
#点击MONKEY_SPECIAL_POINT_LIST中的坐标 主要用于触发"返回"功能
CLICK_SPECIAL_POINT_RATIO: 10
#重启APP事件百分比
RESTART_APP_RATIO: 0
#特殊坐标长按(10)
LONG_PRESS_RATIO: 0
#Android OnlyHome键事件百分比
HOME_KEY_RATIO: 0

#Gesture https://www.jianshu.com/p/095e81f21e07
#手势操作
#双击
DOUBLE_TAP_RATIO: 0
#缩小(两指)
PINCH_RATIO: 0
#放大(两指)
UNPINCH_RATIO: 0
#拖拽
DRAG_RATIO: 0

#Monkey相关的一些值
MONKEY_LIST:
#提高测试效率,点击以下点(x,y)时会触发"后退"操作,避免在一个页面停留时间太久
MONKEY_SPECIAL_POINT_LIST:
- '60,130'
- '2100,60'

#根据以下坐标长按10
LONG_PRESS_LIST:
- '980,560'

#设置不点击的区域, radius用来设置以下列坐标为圆心,不想点击的半径区域
#MONKEY_BLACKLIST_POINT_LIST:
#- 'radius,10'
#- '0,0'


#小程序
MINI_PROGRAM:
#小程序的名字
MINI_PROGRAM_NAME: 学而思营业厅
#小程序的进程
MINI_PROGRAM_PROCESS: com.tencent.mm:appbrand1

#以下的内容很关键,而且需要根据不同的APP定制
CRITICAL_ELEMENT:
#Android 包名和启动的Activity
ANDROID_PACKAGE: com.huasheng.stock
ANDROID_MAIN_ACTIVITY: .Loading

#IOS Bundle ID com.apple.mobilesafari
IOS_BUNDLE_ID: com.tencent.xin
#手机桌面上显示的APP的名字
IOS_BUNDLE_NAME: 微信
#IPA名字的前缀
IOS_IPA_NAME: wechat


#构建XPATH需要的一些内容
#UI底部TabBar
ANDROID_BOTTOM_TAB_BAR_ID: com.***.***:id/mainTabLayout
IOS_BOTTOM_TAB_BAR_TYPE: XCUIElementTypeTabBar

#注意属性值要加引号''
ANDROID_CLICK_XPATH_HEADER: "//*[contains(name(), 'Text') and string-length(@text)<10] | //*[contains(name(), 'Image')] | //*[contains(name(), 'Button')]"
IOS_CLICK_XPATH_HEADER: '@visible="true" and string-length(@value)<30'

#注意属性值要加双引号""
ANDROID_USERNAME:
XPATH: '//*[@resource-id="com.***.***:id/account_num"]'
ACTION: input
VALUE: '137******'
ANDROID_PASSWORD:
XPATH: '//*[@resource-id="com.***.***:id/pwd"]'
ACTION: input
VALUE: 'UICrawler123123'
ANDROID_LOGIN_BUTTON:
XPATH: '//*[@resource-id="com.***.***:id/loginbtn"]'
ACTION: click

#IOS LOGIN_ELEMENT
IOS_USERNAME:
XPATH: '//*[@type="XCUIElementTypeTextField"]'
ACTION: input
VALUE: '130xxxxx456'
IOS_PASSWORD:
XPATH: '//*[@type="XCUIElementTypeSecureTextField" and @value="请输入登录密码"]'
ACTION: input
VALUE: '111111'
IOS_LOGIN_BUTTON:
XPATH: '//*[@type="XCUIElementTypeButton" and @name="登录" and @label="登录"]'
ACTION: click


LIST:
#待输入文件本的控制类型
INPUT_CLASS_LIST:
- android.widget.TextView
- XCUIElementTypeTextField
- XCUIElementTypeSecureTextField

#待输入的文本
INPUT_TEXT_LIST:
- '123'
- 'ABC'

#当发现App跳转到一下app 会触发back
PRESS_BACK_KEY_PACKAGE_LIST:
- 高德地图
- com.autonavi.minimap
- com.android.settings

#除了APP本身的包名外 根据以下包名判断是否跳出了APP.androidapp跳转到以下app时被认为是合法,会继续遍历操作.
ANDROID_VALID_PACKAGE_LIST:
- com.miui.securitycenter
- com.android.server.telecom
- com.lbe.security.miui
- gallery
- packageinstaller

#ios app跳转到以下app时被认为是合法,会继续遍历操作
IOS_VALID_BUNDLE_LIST:
- 照片

#白名单 遇到包含以下文本的控件,会多次点击(默认所有控件只点一次)
ITEM_WHITE_LIST:
- 确定
- 允许
- 退出
- 取消
- 已解决

#不点击包含以下文本的控件
ITEM_BLACKLIST:
- 客服
- 电话
- 不允许
- 拒绝
- 拍照
- 禁止
- 呼叫
- 低电量模式
- 关闭


#以下类型的元素及子元素不会被点击
IOS_EXCLUDE_BAR:
#手机状态栏
- XCUIElementTypeStatusBar
#键盘
- XCUIElementTypeKeyboard

#iOS不点击以下类型的元素
IOS_EXCLUDE_TYPE:
- XCUIElementTypeOther
- XCUIElementTypeKey
- XCUIElementTypeWindow
- XCUIElementTypeApplication

#android中不点击以下类型的元素
ANDROID_EXCLUDE_TYPE:
- android.widget.FrameLayout
# - android.widget.ImageButton


NODE_NAME_EXCLUDE_LIST:
- selected
- instance
- checked
- naf
- content

STRUCTURE_NODE_NAME_EXCLUDE_LIST:
#iOS
#- value
- name

#Android
- text

修改的地方并不多,大家可以用diff比较工具和原版的config.yml比较.
重点说一下这段配置:
原配置如下,含义既是遇到文本元素且<30的都点击

#注意属性值要加引号''
ANDROID_CLICK_XPATH_HEADER: 'string-length(@text)<30'
IOS_CLICK_XPATH_HEADER: '@visible="true" and string-length(@value)<30'

该段不支持如下写,比如我想如下写,可以跑起来,但拼接出来的"clickable elements xpath:"比较怪异且最后脚本端会报错停止,咨询后发现作者并不打算支持如下写法.

#注意属性值要加引号''
ANDROID_CLICK_XPATH_HEADER:
- "//*[contains(name(), 'Text') and string-length(@text)<10]"
- "//*[contains(name(), 'Image')]"
- "//*[contains(name(), 'Button')]"
IOS_CLICK_XPATH_HEADER: '@visible="true" and string-length(@value)<30'

最终查了下xpath语法知识,可以用 | 或来连接多个并列属性,这样跑不会报错且正常.这样就可以点击文本长度大于3小于10,和点击所有图片和Button元素.

#注意属性值要加引号''
ANDROID_CLICK_XPATH_HEADER: "//*[contains(name(), 'Text') and string-length(@text)>3 and string-length(@text)<10] | //*[contains(name(), 'Image')] | //*[contains(name(), 'Button')]"
IOS_CLICK_XPATH_HEADER: '@visible="true" and string-length(@value)<30'

五 执行

先通过adb命令检查小米Mix2真机是否连接正常,且确认真机开发者选项相关开启.

C:\Users\cmd>adb devices -l
List of devices attached
yourSerialNo device product:chiron model:MIX_2 device:chiron

启动appium server

C:\Users\cmd>appium --session-override

切到UICrawler-2.0.jar目录下执行即可.

D:\UICrawler>java -jar UICrawler-2.0.jar -f config.yml -u yourSerialNo

PS:
注意首次运行自动化脚本时候会向手机安装的相关有:
Unlock

Appium Android Input Manager

Appium Settings

io.appium.uiautomator2.Server.test

io.appium.uiautomator2.Server

注意手机端需要手工点击允许安装.

六 执行结果

会按SerialNo+日期时间生成结果目录:

报告如图:

以上配置和jar包在win10和ubuntu18.04均测试正常通过.

其他配置项继续测试中...

七 运行UICrawler Monkey

截取部分相关说明,熟悉基本原生monkey的便可明白,下述配置既是指只运行点击事件的配置.

#设置MONKEY事件百分比 各事件百分比之和为100
MONKEY:
#运行时间,以分钟计
MONKEY_RUNNING_TIME: 6
#以下各项值总和需为100
#滑动事件百分比
SWIPE_RATIO: 0
#点击事件百分比
CLICK_RATIO: 100
#点击MONKEY_SPECIAL_POINT_LIST中的坐标 主要用于触发"返回"功能
CLICK_SPECIAL_POINT_RATIO: 0
#重启APP事件百分比
RESTART_APP_RATIO: 0
#特殊坐标长按(10)
LONG_PRESS_RATIO: 0
#Android OnlyHome键事件百分比
HOME_KEY_RATIO: 0

#Gesture https://www.jianshu.com/p/095e81f21e07
#手势操作
#双击
DOUBLE_TAP_RATIO: 0
#缩小(两指)
PINCH_RATIO: 0
#放大(两指)
UNPINCH_RATIO: 0
#拖拽
DRAG_RATIO: 0

#Monkey相关的一些值
MONKEY_LIST:
#提高测试效率,点击以下点(x,y)时会触发"后退"操作,避免在一个页面停留时间太久
MONKEY_SPECIAL_POINT_LIST:
- '60,130'
- '2100,60'

#根据以下坐标长按10
LONG_PRESS_LIST:
- '980,560'

#设置不点击的区域, radius用来设置以下列坐标为圆心,不想点击的半径区域
#MONKEY_BLACKLIST_POINT_LIST:
#- 'radius,10'
#- '0,0'

启动appium server

C:\Users\cmd>appium --session-override

传参-m 即可运行配置中的monkey相关设置

java -jar UICrawler-2.0.jar -f config.yml -u yourSerialNo -m

执行报告:
我们也可以看到执行的各类monkey事件计数

Tips

作者调起的是非原生monkey,所以当你发现无法正常关掉UICrawler Monkey,一直在手机中继续跑点击的时候,使用

# Linux
adb shell ps |grep monkey
# windows cmd
adb shell ps | findstr monkey
#
adb sehll ps | find "monkey" 找到返回的进程号
#然后 kill掉该手机内原生monkey进程
adb shell kill [刚才查到的进程号]

# windows 原生monkey类似com.android.commands.monkey:
adb shell ps| findstr monkey
USER PID PPID VSIZE RSS WCHAN PC NAME
shell 13846 1032 2073652 51480 futex_wait 7f900d7ef0 S com.android.commands.monkey

是找不到该进程,也甭想kill掉的, 我们可以 ps -ef|grep UICrawler 相关结束掉本机脚本端的那个java进程也就是 . "java -jar UICrawler-2.0.jar -f config.yml -u yourSerialNo -m" 该进程

monkey配置部分说明1

关于坐标查看,可以打开开发者选项,"输入"该节下的 "指针位置".这样就可以看到坐标系了.

MONKEY_LIST:
#提高测试效率,点击以下点(x,y)时会触发"后退"操作,避免在一个页面停留时间太久
MONKEY_SPECIAL_POINT_LIST:
- '80,160'

#设置不点击的区域, radius用来设置以下列坐标为圆心,不想点击的半径区域
MONKEY_BLACKLIST_POINT_LIST:
- 'radius,10'
- '0,0'

第一个坐标'80,160',是左上的一般安卓app里的"返回"区域,

第二个坐标 - 'radius,10' - '0,0' ,这里 0,0 的话 应该不就是app界面左上区域起始点, 然后 x y偏移10 画个圆 ,不又是一般安卓app里的 "返回"区域?
这样 这两个 第1个 和 第3个不就冲突了?

这时如果,第1和2冲突时,以2为准 . 即以上效果为不点击左上那个区域, 也就是一般的app返回区域.

monkey配置部分说明2

#设置MONKEY事件百分比 各事件百分比之和为100
MONKEY:
#运行时间,以分钟计
MONKEY_RUNNING_TIME: 6
#以下各项值总和需为100
#滑动事件百分比
SWIPE_RATIO: 10
#点击事件百分比
CLICK_RATIO: 80
#点击MONKEY_SPECIAL_POINT_LIST中的坐标 主要用于触发"返回"功能
CLICK_SPECIAL_POINT_RATIO: 10
#重启APP事件百分比
RESTART_APP_RATIO: 0
#特殊坐标长按(10)
LONG_PRESS_RATIO: 0
#Android OnlyHome键事件百分比
HOME_KEY_RATIO: 0

#Gesture https://www.jianshu.com/p/095e81f21e07
#手势操作
#双击
DOUBLE_TAP_RATIO: 0
#缩小(两指)
PINCH_RATIO: 0
#放大(两指)
UNPINCH_RATIO: 0
#拖拽
DRAG_RATIO: 0

#Monkey相关的一些值
MONKEY_LIST:
#提高测试效率,点击以下点(x,y)时会触发"后退"操作,避免在一个页面停留时间太久
MONKEY_SPECIAL_POINT_LIST:
- '60,130'
- '2100,60'

#根据以下坐标长按10
LONG_PRESS_LIST:
- '980,560'

#设置不点击的区域, radius用来设置以下列坐标为圆心,不想点击的半径区域
#MONKEY_BLACKLIST_POINT_LIST:
#- 'radius,10'
#- '0,0'

该节为所有UICrawler Monkey配置
1 MONKEY: 该节 要注意所有事件比率百分比之和要为100,
2 MONKEY_LIST: 中的 "MONKEY_SPECIAL_POINT_LIST: "对应 MONKEY:节的"#点击MONKEY_SPECIAL_POINT_LIST中的坐标 主要用于触发"返回"功能
CLICK_SPECIAL_POINT_RATIO: 10"
3 MONKEY_LIST: 中的 "LONG_PRESS_LIST:" 对应 对应 MONKEY:节的" #对应 LONG_PRESS_LIST:特殊坐标长按(10秒)
LONG_PRESS_RATIO: 0"
那么上述配置的意思就是,执行点击事件80%,执行滑动事件10%,点击特殊区域坐标事件10%

八 结语

之前一直用AppCrawler 也很优秀,但无奈作者老大搞学院培训,无心维护和深入继续开发,支持也一直停留在appium1.7.0.
这也就算了,答应过的放出来打算做的特性都还没兑现....
比较使用这两个工具,执行稳定性上UICrawler可以连续跑很久(我最长跑了1小时回来还在继续跑且当前脚本配置来看截图执行的点击比较细腻且有规律),且脚本执行端不会报错,但AppCrawler 10次 会有个3次左右,脚本执行端会报错且无法继续执行下去,另有些配置效果AppCrawler 我并未完全吃透和试验出来.

补充说明

2018年6月29日追加
目前时间截点的config版本,该配置参数MONKEY_RUNNING_TIME: 6 已被CRAWLER_RUNNING_TIME 合并。请已官方github发布为准。

cmd@TR:~/UICrawler$ java -jar UICrawler-2.0.jar -h

16:41:03.088 [main] INFO Crawler - -h Print this usage information

-a Android package's main activity

-b iOS bundle id

-c Maximum click count

-d Maximum crawler UI depth

-f Yaml config file

-i ignore crash

-l loop count

-m run monkey

-p Android package name

-r Crawler running time

-t Appium port

-u Device serial

-v Version

-w WDA port for ios

-p 指定package 就会保证不退出app 或者退出APP了 能自己再重起.
-l loop count 循环次数,即一个Crawler running time遍历时间结束后,继续再跑几个Crawler running time。比如遍历时间6分钟,6分钟结束后 ,如果-l 是3 那就继续再跑2遍6分钟遍历,共3次。

#当发现App跳转到以下app 会触发back

PRESS_BACK_KEY_PACKAGE_LIST:

- 高德地图

- com.autonavi.minimap

- com.android.settings

getpacgesource 里返回的值 只要contains 关键字 就trigger back key 。即遇到当前被遍历的界面上包含配置的关键字即会触发back键。

疑惑与答疑
那这段配置遇到以下app 就back 是为了什么效果?跳到高德以后 会返回到app,不然会一直在高德里遍历。

..................... 那不和 -p 一样的效果 (-p 发现遍历的不是指定app了 也要重起app)

不一样啊,重启launch app 和触发返回 操作不一样 你想想是不是。

那就是面向两种场景的处理,保证不跳出遍历app。

补充记录:

2018年10月24日
已升级为appium1.9.1 ,在ubuntu18.04.1 windows10 升级后,均重跑UICrawler2.21 config 配置不变成功
升级记录
https://testerhome.com/topics/12988#reply10
(以上为win10版本且带支持做win32 uwp win应用UI自动化的appium1.9.1升级方式.)

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 36 条回复 时间 点赞

Thank you for sharing us with such specific and detailed instruction, really helpful :)

Justin 回复

越做越好咯!望早日开源!

吃螃蟹的小马

小马 #6 · June 05, 2018 作者
回复

来一起吃,螃蟹 麻小搞起来😆

国文 回复

等作者开源了可以邀请作者来参加MTSC2018。

AppCrawler目前发布的2.1.3版本是支持appium1.8的。最近一年在忙着创业糊口,公司游走在生死边缘,所以没有太多精力去群里和社区答疑了。AppCrawler一直在更新并在公司内部使用。最新的版本2.3.0以上的没有对外发布。原因很多,主要是之前是scala开发的,计划用kotlin重构(目前计划全公司推kotlin),所以不想再把最新的scala代码发布到外面去了,配置文件也有更新,没做老版本兼容,所以也怕引来很多询问没精力答复大家。

另外AppCrawler在社区霸屏的时间有点久了,已经持续两年了,以前不过是我个人的一个小玩具,现在很多公司和个人也都在借鉴和打造自己的自动遍历体系,我觉得应该也快有更好的开源项目出现了。所以这半年也是在观望状态,期待有人开源出更好的产品。

作者本人已经买了MTSC的票 开源预计6月底 :)

是遍历UI的界面树吗?

小马 #10 · June 07, 2018 作者
余鹏 回复

就是 app界面 或页面 利用appium 获取到整个 元素对象树 渲染树 然后根据配置去执行对元素的操作

iOS测试速度如何

思寒,希望新版本能提供给我啊,我在公司也用appcrawler,而且专门为它搞了台mac执行机,套了个web壳子,提供远端开启多进程多机跑兼容性测试。

马克一下

生成的测试报告乱码是因为什么呢,如果是编码不一致,请问在哪里可以修改测试报告的编码格式

小马 #15 · June 25, 2018 作者
show dream 回复

report.html 里改 charset=utf-8

小马 回复


这几种·编码格式都试过,报告还是乱码


这里面也是utf-8

这个报告打开已经乱码了

小马 #19 · June 26, 2018 作者

配置已更新 只保留了

#运行时间限制(分钟)
CRAWLER_RUNNING_TIME: 1800 这个即可以控制非monkey 的 也可以控制monkey 的时间。

去掉了配置 以前monkey 的 #运行时间,以分钟计
MONKEY_RUNNING_TIME: 6

@harsayer 你好,工具实践了一下,的确不错,但是我不知道为什么当我切换到ios原生界面的时候,停留在页面,不能进行点击,appium控制台会报这样的问题,No web frames found.

还有一个问题,android有固定的返回点击配置MONKEY_SPECIAL_POINT_LIST,iOS有么?因为会有这种情况,一个web界面全部是文字,只有左上角有个返回按键,而这个返回按键之前已经点过一次,所以不再点击,这个返回也没有中文名称,只是一个按钮。

appium在设备安装完成Unlock之后就自动退出了,求大神帮忙看一下是什么原因呢?

请问如果我要输入支付密码,可以在CRITICAL_ELEMENT里面仿照ANDROID_USERNAME写一个PAY_PASSWORD吗


新的版本中的配置是这个,是说支持or的配置了,是不是就这样写了?
ANDROID_CLICK_XPATH_HEADER: " ( //[contains(name(), 'Text') and string-length(@text)>2 and string-length(@text)<10] or //[contains(name(), 'Image')] or //*[contains(name(), 'Button')] )"

各位大神在win7上试过,有没有遇到读取config.yml文件失败的
[main] INFO util.ConfigUtil - Reading config file D:\UICrawler\config.yml
[main] ERROR util.ConfigUtil - !!!!!!Fail to read config file

show dream 回复

您好,请问下您的乱码问题解决了吗?我也遇到了同样的问题,就是解决不了

请问支持翻页刷新或者是下滑刷新吗

Joe · #28 · October 10, 2018
Author only
小马 #29 · October 24, 2018 作者

2018年10月24日
已升级为appium1.9.1 ,在ubuntu18.04.1 windows10 升级后均重跑UICrawler2.21 配置不变 成功
升级记录

https://testerhome.com/topics/12988#reply10 (以上为win10版本且带支持做win32 uwp win应用UI自动化的appium1.9.1升级方式.)

你好,我在mix2上跑失败了, capabilities.setCapability("automationName","uiautomator2");报错:org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure. 8.x的设备就mix2上面跑不了,求解~~

小马 #31 · October 29, 2018 作者
sa 回复

capabilities.setCapability("automationName","uiautomator2");

不清楚这句你是配置在哪里的.

在UICrawler 的config.yml 里

1 配置appium

#一些默认值
DEFAULT_VALUE:
#Appium server IP 0.0.0.0代表Server在本地
APPIUM_SERVER_IP: 0.0.0.0
#Appium Server端口
PORT: 4723
#IOS 才会用到WDA_PORT
IOS_WDA_PORT: 8001

2 和启动apk

#以下的内容很关键,而且需要根据不同的APP定制
CRITICAL_ELEMENT:
#微信小程序用下面的包名
#ANDROID_PACKAGE: com.tencent.mm
#ANDROID_MAIN_ACTIVITY: com.tencent.mm.ui.LauncherUI
#Android包名和启动的Activity
ANDROID_PACKAGE: com.***.***
ANDROID_MAIN_ACTIVITY: .****

其它的你按需配置 .
1 参考手机真机需要开启的相关开发者选项 开启相关,然后手机连上USB 到执行pc机
2 adb devices -l 确认执行pc 找的到被测真机和yourSerialNo 你的手机设备串号
3 启动 appium --session-override

4 在UICrawler.jar 和 config.yml 的目录下 执行 java -jar UICrawler-2.21.jar -f config.yml -u yourSerialNo

不需要指定 capabilities.setCapability("automationName","uiautomator2");

你好,我在Android端运行,点击动作间隔非常大,经常几分钟才点一次,请问可能是哪里的问题呢?

33Floor has been deleted

今天小试了一把,感觉不错,就是有一点不好,抓的屏太多了,我还没有看源码,打算把他给屏蔽了。
另外一点就是这个git项目不是gradle项目,需要自己把一个maven项目转成gradle,好多依赖转不过去,或者用命令转完后手工编译失败,有点麻烦

想问问现在完全开源了吗


"[ADB] No 'uiautomator' process has been found" 咋就没有呢?

Justin 回复

怎么设置批量手机执行?是不是要启动多个进程才行啊?

唐唐 回复

对 需要多个进程。 建多个Jenkins job

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up