#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>'
#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. "}
抢沙发,楼主辛苦!
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 这个在哪
@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 上直接下载的,权限问题没有解决,请指教
想利用 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
这个问题还没有解决。
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?
写的非常棒!实用!