Q&A(常见问题)

冰狐智能辅助相对autojs的优势有哪些?

  1. 提供的js版api简单、实用,比autojs更好用,除了辅助函数外还提供很多常用的系统api。
  2. 移动端提供「自动构建脚本」功能,即通过选择模块和配置参数来实现app自动化功能,这对于不会编程和编程初学者来说非常友好,甚至对编程老手来说也能大幅度提升效率。
  3. 提供在线远程实时调试,支持远程实时抓取log和界面UI树。比如有个手机在国外,而开发者在国内,如果手机在运行脚本过程中出了问题,开发者可以直接在家里通过web端的在线远程实时调试快速解决问题,这对传统的调试方式简直是降维打击。
  4. 提供远程设备控制功能。用户可以直接在web端控制远程的手机,类似手机远程桌面。
  5. 支持后端SaaS服务,比如:设备管理、脚本管理、用户管理等实用的后端功能。开发者可以直接使用这些功能,大幅提供效率、节省成本。
  6. 支持微服务,若SaaS不能完全满足需求则可以使用微服务解决问题。微服务可以让开发者使用js脚本来扩展SaaS服务能力。不同开发者的需求千变万化,如何让开发者以最低代价、最高效率来快速实现自己的后端业务逻辑是微服务的最典型应用场景。
  7. 支持open api,使得开发者可以方便的把自己的后端服务和冰狐智能辅助后端进行打通、融合,快速扩展自己的后端服务能力。
  8. 在后端方面,开发者仅需关注业务本身即可,不用关心与业务无关的服务器、容器、运维、数据库、扩容等等复杂且“没有意义”的事情(这些复杂的事情冰狐智能辅助后端服务会自动完美解决)。

冰狐智能辅助支持模拟器吗?

冰狐智能辅助支持各种模拟器,包括广受大家喜欢的夜神模拟器。

不编程如何实现app自动化?

如何实现团队协作开发?

冰狐智能辅助支持分布式开发和部署,支持多个异地开发人员协同一起完成项目,一个团队内部所有成员的脚本都可以互相调用。使用步骤如下
  1. 项目管理者新建团队
  2. 邀请团队成员加入团队。
  3. 在脚本中使用import 'alias.scrpitName'来访问团队其他成员的脚本,例: import 'ak.test';表示导入别名为ak成员的test脚本

如何定制自己的app?

如何不使用冰狐智能辅助app,使用自己定制的app(让客户看起来是自己开发的app),请点击这里查看

什么是调试模式和发布模式?

调试模式用于开发者开发时调试脚本运行效果,开启调试模式后即可查看当前窗口的所有控件信息和logs,当调试完成并发布脚本后,终端设备(没开启调试模式的设备)才能执行最新脚本。调试模式下,开发者可以通过网页直接获取设备UI树,也可以实时获取设备中的log,以便于调试。调试模式下只能运行调试版本脚本,发布模式下只能运行发布版本脚本。

如何开启冰狐智能辅助调试功能?

设备登录后默认为发布模式,可以多次连续点击手机端APP中的"头像"即可切换为调试模式,切换成功后标题右边显示"prod-dev",再次连续多次点击"头像"可以切换为发布模式。或者在网页端进入【移动端】/【我的设备】,选择设备,然后点击"编辑"/"切换模式"即可。
点击查看手机端如何开启调试模式「视频教程」
点击查看网页端如何开启调试模式「视频教程」

如何发布脚本?

每次修改脚本都是直接修改调试版脚本(调试版脚本只能运行在开启了调试模式的设备上)。点击脚本对应的"发布"按钮,即可将最新的调试版本同步到发布版本(发布版脚本只能运行在发布模式的设备上)。

如何调试脚本程序和自动构建?

在程序的关键节点加入log语句,或者在自动构建中加入log模块,把关键信息打印出来与预期的结果对比。也可以加入toast函数(模块),把关键信息在app界面上弹出来。
如何在线实时查看log信息?在网页端进入「移动端」/「我的设备」,点击设备对应的"LOG"按钮,即可查看实时log信息

子用户如何登录?

在「管理中心」/「用户管理」中创建的用户为当前用户的子用户,在网页端和移动端登录方式与普通用户稍有不同。
点击查看子用户手机端如何登录「视频教程」
点击查看子用户网页端如何登录「视频教程」

tag详解

tag用于标记一个UI控件,可用于搜索UI控件。一个控件的tag可以由id、text和className构成。
下面来通过一个视频教程来详细介绍如何获取tag,如何查找tag。点击查看tag详解「视频教程」

如何获取当前app的包名和窗口名?

将app切换到前台,然后"获取UI树",上部分会显示当前app的包名,如下图所示:红色部分是包名,蓝色部分是windowClassName

如果查看控件是否内置点击功能,是否被选中?

获取UI树后,如下图所示:红色部分为true表示控件内置点击功能,蓝色部分为true表示控件被选中

能看到控件但是通过tag搜索不到控件怎么办?

有时候在界面上可以看到某个控件,但就是在UI树中搜索不到。有可能控件显示的并不是文本而是文字图片,可以从root往下查看找到该控件;也有可能是隐藏控件这时可以试试添加invisible试下,如下图所示:

目标控件即没有text也没有id,如何找到该控件?

可以先在目标控件附近寻找某个可以通过findView找到的控件(一般有显著的text或者id),然后再设置family参数,让其最终指向目标控件,最终通过family参数实现间接获取目标控件的目的。

操作控件view时出现错误或者异常怎么办?

findView可以找到控件,但是在操作时却出现错误或异常,大部分原因是因为通过findView找到控件view后,跳转到到其他页面,又返回本界面继续操作控件view,但因为在界面切换后操作系统已经释放了之前的view,所以再次使用会出现错误。解决方案:从其他页面返回后,需要再次findView,重新找到view再使用。

粘贴文本失败如何处理?

首先确保文本是否粘贴到了EditText上,只有这种类型的控件才可以粘贴文本;其次修改paste的type选项参数试下,一般都可以解决所有问题。

点击控件无效如何处理?

在控件的三种点击模式间切换尝试,一般都可以解决问题。

滚动页面失败如何处理?

在三种滚动模式间切换尝试,一般都可以解决问题。

没有编程经验可以使用自动构建吗?

可以,使用者需要对自己的业务逻辑有比较清晰的认识,然后根据业务逻辑选择模块,然后配置参数,最后编译成js脚本。

运行结果和预期的不一样怎么办?

1.首先看下log,确认脚本运行过程中是否有错误信息。2.查看下参数是否配置正确,尤其是点击控件后一般要延迟一段时间,否则有可能操作失败。

模块family参数表示什么意思,如何实际运用?

family:存放控件家族成员的数组,可以包含子孙也可以包含祖先,一般多用于控件操作,表示操作控件的某一个家族成员而不是控件本身,0表示父控件(parent),1表示第1个控件,2表示第2个子控件,-1表示最后一个子控件,-2表示倒数第二个子控件,依次类推。例:[0,-1,2]等同于item.parent[-1][1],表示当前控件的父控件的最后一个子控件的第二个子控件。
一般在如下场景使用family:当我们想要操作的控件无法直接通过findView找到时(比如该控件没有text和id),可以先在目标控件附近寻找某个可以通过findView找到的控件(一般有显著的text或者id),然后再设置family参数,让其最终指向目标控件,最终通过family参数实现间接获取目标控件的目的。
点击查看子family参数的具体用法「视频教程」

出现服务异常提示

一般是由于系统辅助服务停止了,需要重新启动「冰狐智能辅助」app,并按提示开启辅助权限。若依然无法解决问题,请先进入手机设置把冰狐智能辅助的辅助权限关闭,然后杀掉冰狐智能辅助app,最后再启动冰狐智能辅助app按提示开启辅助权限即可。

设备在离线和在线间切换,或者经常离线

一般是由于没有设定「冰狐智能辅助」的后台网络访问权限或者没有锁定「冰狐智能辅助」,点击这里查看如何设置

如何传递外部参数给脚本?

有时在脚本执行前我们需要传递参数给脚本,有三种方法可以传递参数:
  1. 如果每个设备需要有不同的参数,可以通过在网页端「移动端」/「设备管理」中设置设备的自定义数据,然后在脚本中使用getDeviceExtraData获取这个值,这样每个设备就有不同的值了。注意:数据为字符串,推荐使用json字符串。
  2. 如果是在android端直接调用冰狐智能辅助sdk,则可以直接在调用exeScript函数时传入参数。
  3. 可以使用自定义数据来模拟脚本参数,在网页端「管理中心」/「自定义数据」中创建自定义数据,然后在脚本中使用getCutomData来获取数据。使用者可以自己修改参数(注意区分开发者和使用者),下次调用脚本时自动更新参数。

通过findView等api有时候能找到控件,有时候找不到?

界面可能被一些看不见的元素遮挡,或者被反自动化手段屏蔽,通常情况可以使用刷新界面(调用refresh函数)来解决。