• #5 楼 @seveniruby 恩,看了一下 macaca-insepector 的 xpath, js 写的,目测 appcrawler 的算法和它还是有点小区别,加入了 index,resouce-id,text ... etc,更直观,我用的语言是 java,尝试 java 重造一下。
    十一期间开源,这是大礼包啊,感谢思寒!😃 期待

  • @seveniruby

    版本迭代好快啊,非常好用的一款遍历工具!(汗!,刚才弹出页面,发错位置了。。。)
    有个问题想请教,获取界面元素后,操作某控件后,跳转界面后,那么之前界面上未遍历的元素肯定是需要存储的,以便下次识别遍历情况,我看是存入到了 UrlElement 中,其中 UrlElement 中的 loc 我理解就是该控件的 xpath 规则,下次遍历到该界面就采用这个 xpath 规则获取控件,不知我理解是否准确。问题是,比如下面这个 “注册” 控件元素,获取到 WebElement 后,很想了解如何组装成 loc 存入 UrlElement 的?

    Element='<android.widget.LinearLayout bounds="[0,435][360,484]" checkable="false" checked="false" class="android.widget.LinearLayout" clickable="true" content-desc="" enabled="true" focusable="false" focused="false" index="0" instance="2" long-clickable="false" package="com.xueqiu.android" password="false" resource-id="com.xueqiu.android:id/button_register_container" scrollable="false" selected="false" text="">
      <android.widget.TextView bounds="[0,435][360,484]" checkable="false" checked="false" class="android.widget.TextView" clickable="false" content-desc="" enabled="true" focusable="false" focused="false" index="0" instance="0" long-clickable="false" package="com.xueqiu.android" password="false" resource-id="com.xueqiu.android:id/button_register" scrollable="false" selected="false" text="注册" />
    </android.widget.LinearLayout>'
    
  • STF 框架之 minicap 工具 at 2016年09月16日

    #12 楼 @victors 基础问题 chmod 777 minicap; chmod 777 minicap.so

  • #102 楼 @quqing

    1. 截图增加运动轨迹 <!--截图运动轨迹模式 0-错误的时候画 (默认), 1-所有都画--> 1 这个对吧,那就静等 github 源码更新啦。
  • #100 楼 @quqing 一定的,你将这么好的资源分享出来,非常感谢,赞!
    思涵那版截图上做标记,确实不错,控件遍历过程更直观,非常好奇,不知 quqing 是否了解,那版的开源还是需要耐心等待。

  • #98 楼 @quqing 对 webdriver 还是不够熟悉,原来 driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS);瞬间提速许多,😃

  • #90 楼 @quqing 确实 JDK1.8 上是可以奔跑的!赞!
    还遇到一个问题,影响性能不知如何破解,UiNode 存储 Id 包含 xpath,之后 pop 出来会根据 xpath 在当前页面进行懒加载,
    element 获取不到,抛出 NoSuchElementException,从开始找到抛异常间隔时间太长了,这个时间能否缩短。
    Appium Server 端 log 如下

    info: [debug] [BOOTSTRAP] [debug] Got data from client: {"cmd":"action","action"
    :"find","params":{"strategy":"xpath","selector":"//android.widget.FrameLayout[1]
    /android.view.ViewGroup[1]/android.widget.FrameLayout[1]/android.widget.LinearLa
    yout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.wid
    get.LinearLayout[2]/android.widget.FrameLayout[1]/android.widget.ListView[1]/and
    roid.widget.LinearLayout[1]/android.widget.LinearLayout[2]/android.widget.Linear
    Layout[4]","context":"","multiple":false}}
    info: [debug] [BOOTSTRAP] [debug] Got command of type ACTION
    info: [debug] [BOOTSTRAP] [debug] Got command action: find
    info: [debug] [BOOTSTRAP] [debug] Finding //android.widget.FrameLayout[1]/androi
    d.view.ViewGroup[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]
    /android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.Lin
    earLayout[2]/android.widget.FrameLayout[1]/android.widget.ListView[1]/android.wi
    dget.LinearLayout[1]/android.widget.LinearLayout[2]/android.widget.LinearLayout[
    4] using XPATH with the contextId:  multiple: false
    info: [debug] [BOOTSTRAP] [debug] Returning result: {"status":7,"value":"Could n
    ot find an element using supplied strategy. "}
    
  • 抢沙发,楼主辛苦!

  • #88 楼 @quqing

    Exception in thread "main" java.lang.UnsupportedClassVersionError: pers/quq/filedb/core/Filter : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at pers.traveler.robot.RobotFactory.build(RobotFactory.java:13)
        at pers.traveler.test.TravelerTest.main(TravelerTest.java:16)
    
    

    我在 github 上拿到源码,一直在看,还没有跑成功,报错如上
    Windows7
    android 6.0
    测试 Apk zhihu
    请教一下,我没找到 pers/quq/filedb/core/Filter 这个在哪

  • #13 楼 @quqing quqing 你好,请问你的这个版本核心遍历算法部分用的是 DFS 和 Scala 版本的处理方式一样么,目前那版还未开源,反编效果也不好,想研究一下。请指教,谢谢。

  • #84 楼 @heyyuyu 非常感谢,只 For IOS?有没有 Android 平台的?

  • STF 框架之 minicap 工具 at 2016年08月26日

    @doctorq
    手机 cpu :armeabi-v7a
    SDK: 23
    Android 手机设备已 root
    同时 adb remount
    执行 adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/ minicap.so -P 1280x720@1280x720/0 -t
    报错: /system/bin/sh: /data/local/tmp/minicap.so: can't execute: Permission denied
    请问 minicap.so 为什么没有访问权限呢?

    @jianjianjianbing 我是从 github 上直接下载的,权限问题没有解决,请指教

  • #81 楼 @heyyuyu 求截图工具传送门😃

  • 想利用 appcrawler -c xueqiu.json -p android -a xueqiu.apk 进行遍历
    报如下错误
    win7 下执行的,请问哪里出了问题,请各位帮忙看下。

    Exception in thread "main" java.nio.charset.UnmappableCharacterException: Input
    length = 2
            at java.nio.charset.CoderResult.throwException(CoderResult.java:278)
            at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:338)
            at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
            at java.io.InputStreamReader.read(InputStreamReader.java:184)
            at java.io.BufferedReader.read1(BufferedReader.java:203)
            at java.io.BufferedReader.read(BufferedReader.java:279)
            at java.io.Reader.read(Reader.java:140)
            at scala.io.BufferedSource.mkString(BufferedSource.scala:96)
            at com.xueqiu.qa.appcrawler.CrawlerConf.load(CrawlerConf.scala:152)
            at com.xueqiu.qa.appcrawler.AppCrawler$.main(AppCrawler.scala:113)
            at com.xueqiu.qa.appcrawler.AppCrawler.main(AppCrawler.scala)
    
  • #43 楼 @pacerron 参考命令行格式?我看你用的是 1.2.1 版本
    #42 楼 @pacerron
    是手机 uiautomator 存在问题,已修复,在 appcrawler 1.2.1 版本上可以正常遍历,非常感谢!
    但是尝试 appcrawler 1.4 版本 尚未成功,文档中快速遍历命令行 “appcrawler -a xueqiu.apk”
    err :

    info: [debug] executing cmd: "D:\Program Files\adt-bundle-windows-x86_64\sdk\pla
    tform-tools\adb.exe" -s 7731G11044C090389 shell "am start -S -a android.intent.a
    ction.MAIN -c android.intent.category.LAUNCHER -f 0x10200000 -n com.xueqiu.andro
    id/.com.squareup.leakcanary.internal.DisplayLeakActivity"
    
    error: Activity used to start app doesn't exist or cannot be launched! Make sure
     it exists and is a launchable activity
    

    这个问题还没有解决。

  • #20 楼 @pacerron 你应该是正常运行起来了 ,能帮我看一下 #40 的问题么,关于 err : UiAutomator quit before it successfully launched
    帮忙指点一下。

  • UiAutomator quit before it successfully launched 求解?

    https://testerhome.com/topics/715 社区帖子里面有类似问题出现,按照思寒推荐方法没能解决,请问大家有遇到这个问题么,求指点。
    @seveniruby
    运行环境:
    PC: win7
    Appium: 1.4.16
    appcrawler:1.4
    执行命令 appcrawler - a xueqiu.apk

  • Windows 下 Appium 版本只有 1.4,请问楼主 windows 下如何实现完美运行 AppCrawler?

  • Android CTS 合集 at 2016年06月29日

    写的非常棒!实用!