求一个名字为home的应用,找了好久iphonehome键找不到到,

语音验证码注册已有帐号?登录下载知乎 App谁有亚瑟王插曲we will go home 完整版
找了好久没找到 谢谢了~_百度知道
谁有亚瑟王插曲we will go home 完整版
找了好久没找到 谢谢了~
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
callmewolf
callmewolf
采纳数:20035
获赞数:74845
Caitlin Matthews
We Will Go Home (Song of Exile)
已发----你要的东东在附件中
满意请尽快选择最佳答案哦
灰常满意请追加分吧
有问题hi我啦~~~~~~~
╭(╯3╰)╮O(∩_∩)O\(≥▽≤)/
-------callmewolf搞到中转站中 然后 就能下载了 东西在附件中一切抢我题的行为都属于耍流氓
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。本帖已被设为精华帖!
2.1.0版本已经发布
在线帮助文档:
腾讯安全部门也有使用
能获取最新的内测版本和一些配置文件模板
为了表示对社区7月15号的测试大会的支持, 接下来将只允许参会同学加群咨询问题
加群请注明参会的个人姓名
自动遍历的价值
自动化探索测试, 遍历基本的界面, 了解主要界面的可用性. 比如兼容性, 基本功能
利用遍历获取app的加载时间和性能数据, 需要借助其他的性能数据抓取工具,比如OneApm, NewRelic
利用遍历验证app的内存泄漏以及稳定性等功能, 需要借助LeakCanary和MLeaksFinder
自动化回归测试. UI diff 验证新老版本的功能差异. 并识别细节的问题
抓取接口请求 辅助验证一些模块基本接口, 并辅助分析接口调用流程. 为接口测试做准备
----------------
AppCrawler 2.0.0
app爬虫, 用于自动遍历测试. 支持Android和iOS, 支持真机和模拟器
帮助文档: http://seveniruby.gitbooks.io/appcrawler
移动测试技术交流: https://testerhome.com
感谢: 晓光 泉龙 杨榕 恒温 mikezhou yaming116
感谢提供商业支持的优秀公司: Keep
--------------------------------
Usage: appcrawler [options]
-a, --app &value&
Android或者iOS的文件地址, 可以是网络地址, 赋值给appium的app选项
-c, --conf &value&
配置文件地址
-p, --platform &value&
平台类型android或者ios, 默认会根据app后缀名自动判断
-t, --maxTime &value&
最大运行时间. 单位为秒. 超过此值会退出. 默认最长运行3个小时
-u, --appium &value&
appium的url地址
-o, --output &value&
遍历结果的保存目录. 里面会存放遍历生成的截图, 思维导图和日志
--capability k1=v1,k2=v2...
appium capability选项, 这个参数会覆盖-c指定的配置模板参数, 用于在模板配置之上的参数微调
-r, --report &value&
输出html和xml报告
--template &value&
输出代码模板
--master &value&
master的diff.yml文件地址
--candidate &value&
candidate环境的diff.yml文件
执行diff对比
-vv, --verbose
是否展示更多debug信息
appcrawler -a xueqiu.apk
appcrawler -a xueqiu.apk --capability noReset=true
appcrawler -c conf/xueqiu.json -p android -o result/
appcrawler -c xueqiu.json --capability udid=[你的udid] -a Snowball.app
appcrawler -c xueqiu.json -a Snowball.app -u 4730
appcrawler -c xueqiu.json -a Snowball.app -u http://127.0.0.1:4730/wd/hub
#启动已经安装过的app
appcrawler --capability appPackage=com.xueqiu.android,appActivity=.welcomeActivity
#从已经结束的结果中重新生成报告
appcrawler --report result/
#新老版本对比
appcrawler --candidate result/ --master pre/ --report ./
#自动生成Page Object代码模板文件
appcrawler --template PageObjectDemo.ssp --output result/
#根据wda的inspector生成测试用例代码
appcrawler --template PageObjectDemo.ssp -u http://localhost:8100
重构和不兼容改动
重构了一半多的代码. 提升了性能, 改进测试用例生成的方式. 更快更稳定.
所有的action字段都支持简单的动作和完整的scala编程语句, 样例如下
click 点击
driver.swipe(0.8, 0.8, 0.2, 0.2) 滑动
backApp 从其他的app回退到当前app
非以上内容都认为是输入文本
以前的是MiniAppium.xxx, 新版本修改为driver.xxx, 这个driver就是selenium的driver
Appium失败重试
如果appium崩溃了(主要是uiautomator的崩溃), appcrawler会自动重启appium继续测试.
这样需要修改你的遍历配置, 设置为 dontStopAppOnReset: true
androidCapability:
deviceName: "192.168.0.102:5555"
appPackage: "com.gotokeep.keep"
appActivity: ".activity.SplashActivity"
dontStopAppOnReset: true
appium: "http://127.0.0.1:4723/wd/hub"
automationName: uiautomator2
diff报告改进
进行了更好的分类管理.
根据页面进行分类.
目前可以根据老版本的运行结果来断言新版本的老功能是否符合预期.
分为结果对比和数据对比, 降噪还没实现.
支持macaca
之前硬编码了使用老的uiautomator模式, 这次放开了automationName, 可以支持uiautomator2和macaca了
在automationName处可以指定macaca, 其他配置跟appium一样.
androidCapability:
deviceName: "192.168.0.102:5555"
appPackage: "com.gotokeep.keep"
appActivity: ".activity.SplashActivity"
appium: "http://127.0.0.1:4723/wd/hub"
automationName: uiautomator2
automationName: macaca
用来判断app有没有崩溃, 或者点击后有没有特殊的需要注意的控件
- //*[@package="com.gotokeep.keep"]
- //*[@text="发送朋友圈"]
- //*[@package="com.tencent.mm"]
比如设定了断言所有的预期结果里面, 包名都必须是keep, 那么遇到拍照或者发朋友圈, qq登录的地方, 就会提示错误.
可以通过断言预期结果的基本内容.
yaml风格的自动化测试用例原型
完整的自动化用例支持在2.1.0版本再放出来. 目前的只是demo, 只是用来辅助自动遍历的.
name: demo1
xpath: //*[contains(@resource-id, 'text_home_train_collection_title')]
action: driver.swipe(0.5, 0.8, 0.5, 0.2)
xpath: //*[contains(@resource-id, 'text_home_train_collection_title')]
action: driver.swipe(0.5, 0.2, 0.5, 0.8)
xpath: //*[contains(@resource-id, 'text_home_train_collection_title')]
action: tap
- //*[contains(@text, "置顶")]
xpath: //*[contains(@text, '置顶')]
action: click
- //*[contains(@text, "添加训练")]
- //*[contains(@text, "故意错误")]
ChangeLog和下版本的计划
目前为2.0.0版本
2.1.0会未发布的下个版本计划
# 2.1.0 [TODO]
独立的yaml格式的自动化测试用例支持
支持从历史数据中寻找最优点击路径
支持游戏app遍历
支持macaca[完成]
失败重试[完成]
支持简单的测试用例[完成]
架构重新设计[完成]
新老版本对比报告改进[完成]
支持遍历断言[完成]
支持历史对比断言[完成]
修正不支持uiautomator2的问题[完成]
支持yaml自动化测试用例[完成]
action支持长按[完成]
重构用例生成方式[完成]
完整的配置文件示例 ---
logLevel: "TRACE"
reportTitle: "Keep"
saveScreen: true
screenshotTimeout: 20
currentDriver: "android"
showCancel: true
tagLimitMax: 5
- xpath: //*[../*[@selected='true']]
maxTime: 10800
resultDir: ""
capability:
newCommandTimeout: 120
launchTimeout: 120000
platformVersion: ""
platformName: "Android"
autoWebview: "false"
autoLaunch: "true"
noReset: "true"
androidInstallTimeout: 180000
androidCapability:
deviceName: "192.168.0.102:5555"
appPackage: "com.gotokeep.keep"
appActivity: ".activity.SplashActivity"
dontStopAppOnReset: true
appium: "http://127.0.0.1:4723/wd/hub"
automationName: uiautomator2
automationName: uiautomator2
nativeWebScreenshot: "true"
defineUrl:
- //*[@selected='true' and contains(name(), 'TextView')]/@text
#- //*[contains(@resource-id, 'title')]/@text
appWhiteList:
- com.shafa.market
- ".*MainActivity"
- ".*SNBHomeView.*"
maxDepth: 20
headFirst: true
enterWebView: true
urlBlackList:
- .*OutdoorSummaryMap.*
- .*PersonalPage.*
- .*Training.*
- .*FriendRank.*
- .*\\.base\\.Container.*
#urlWhiteList:
#- ".*Main.*"
backButton:
- //*[contains(@resource-id, "left_button") and @clickable='true']
#defaultBackAction:
#- import sys.process._;
#- Thread.sleep(5000)
#- val name=Seq("adb", "shell", "dumpsys window windows | grep mCurrentFocus").!!.split(" ")(4).split("/")(0)
#- println(s"kill package ${name}")
#- Seq("adb", "shell", s"am force-stop ${name}").!!
#firstList:
#- //*[contains(@resource-id, "layout_picker_view_container"]
selectedList:
#android非空标签
- //*[@clickable='true']
- //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)&0 and string-length(@text)&10 ]
#通用的button和image
- //*[@clickable='true']//*[contains(name(), 'Button')]
- //*[@clickable='true']//*[contains(name(), 'Image')]
#todo:如果多个规则都包含相同控件, 如何排序
#处于选中状态的同级控件最后点击
- //*[../*[@selected='true']]
- //*[../../*/*[@selected='true']]
- //*[../../*/*[@selected='true'] and contains(@resource-id, 'tab_')]
- //*[contains(name(), "HorizontalScrollView")]
- //*[@resource-id='com.gotokeep.keep:id/layout_bottom']
blackList:
- ".*\\.[0-9].*"
- ".*[0-9]{2,}.*"
- //*[contains(@resource-id, "wrapper_in_custom_title_bar")]//*[contains(@resource-id, "right_button")]
- //*[contains(@resource-id, "share")]
- //*[contains(@text, "开始第")]
- //*[contains(@resource-id, "lock")]
- //*[contains(@text, "举报")]
triggerActions:
- xpath: //*[contains(@resource-id, "layout_picker_view_container")]//*[@text="确定"]
- xpath: //*[contains(@resource-id, "content-wrapper_dialog")]//*[@text="不发了"]
- xpath: //*[@text="拒绝"]
- xpath: //*[@text="放弃"]
- xpath: //*[@text="结束训练"]
- xpath: //*[contains(@resource-id, "quit_confirm_button")]//*[contains(@text, "确定")]
- xpath: //*[contains(@resource-id, "layout_right_second_button")]//*[contains(@resource-id, "right_second_button")]
action: yoga
- //*[@package="com.gotokeep.keep"]
- //*[@text="胸部"]
- //*[contains(@text, "离心俯卧撑")]
name: demo1
xpath: //*[contains(@resource-id, 'text_home_train_collection_title')]
action: driver.swipe(0.5, 0.8, 0.5, 0.2)
xpath: //*[contains(@resource-id, 'text_home_train_collection_title')]
action: driver.swipe(0.5, 0.2, 0.5, 0.8)
xpath: //*[contains(@resource-id, 'text_home_train_collection_title')]
action: tap
- //*[contains(@text, "置顶")]
xpath: //*[contains(@text, '置顶')]
action: click
- //*[contains(@text, "添加训练")]
- //*[contains(@text, "故意错误")]
#所有view的叶子节点 一般表示游戏
#- action: monkey
xpath: //android.view.View[not(*) and contains(@bounds, "[0,0]") ]
#startupActions:
#- println(driver)
#beforeElementAction:
#- xpath: //*[@resource-id="com.shafa.market:id/nav"]//android.widget.TextView
action: MiniAppium.event(21)
#- Thread.sleep(3000)
#- println(driver.getPageSource())
#afterElementAction:
#- println(driver)
#afterUrlFinished:
#- monkey()
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
—— 来自TesterHome官方
刚使用AppCrawler 想问问思寒老师, 如果启动appium-desktop
是否也可以?
赞一个!啥时候用Java或Python重写
哈哈,好问题。
哈哈. 谜之尴尬. 期待有同学搞出来java版本吧. java的生态还是健全的.
我想参与java版
要不大家一起搞个java版本吧. 我提供技术指导. 搞个社区的开源项目
你的百度网盘里 只见到了2.0 jar包版,有zip
解压bin 的版本吗
还未打包弄到网盘么?
赞成,你把架构框架搞一下 大家一起来做搬运工
找个人带头吧
人生苦短,请用python,期望来个python版本
给力,期待AppCrawler越多越好
源码github上也放一份
+1 期待python版本的。
超级期待2.1.0的游戏app遍历
python 需要帮忙,算我一个
Python的话,也算我一个
期待python + 10086
21楼 已删除
23楼 已删除
appcrawler生成的图片实际格式是png的,但是用了jpg后缀,能不能改一下呢?毕竟jpg写死在代码里面了,改成可配置也行
下次更新带上去吧
java+10086
配置:afterElementAction:println(driver)
老是有这个问题。
2.0 版本的 解压 bin版本 可以打包一个么?
另外2.0 支持appium 1.6.4 么?
期待python版本的。
期待python版本的
咨询个问题,如果是手机已经有的apk,用那个指令来启动呢,说明,这个apk无法卸载,也无法直接安装新的应用
—— 来自TesterHome官方
你估计不懂appium吧,
你可以看看他的文档, 简单来说, capability里面的app参数不写即可.
以后都直接通过jar包方式提供了. 直接java -jar运行即可.
bin格式的, 很多人不会用. 我就不提供了
将本帖设为了精华贴
要运行conf 的话
怎么弄。。。
自己新建个conf目录 新建.yaml 文件
在jar包同一目录下么?
随便, 只要yaml文件地址路径传给appcrawler即可.
在生成报告的web页面(index.html)中有这样的错误:
文件提前结束。
Exception:
org.xml.sax.SAXParseException
com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
com.xueqiu.qa.appcrawler.RichData$.toDocument(RichData.scala:26)
com.xueqiu.qa.appcrawler.TemplateTestCase$$anonfun$addTestCase$1$$anonfun$apply$3.apply(TemplateTestCase.scala:65)
org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
org.scalatest.Transformer.apply(Transformer.scala:22)
org.scalatest.Transformer.apply(Transformer.scala:20)
org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186)
org.scalatest.TestSuite$class.withFixture(TestSuite.scala:196)
org.scalatest.FunSuite.withFixture(FunSuite.scala:1560)
生成报告目录下appcrawler.log中我看有一段:
16:34:04 INFO [Crawler.setElementAction.661] set action to back
16:34:04 INFO [Crawler.getBackButton.670] go back
16:34:04 WARN [Crawler.getBackButton.687] find back button error
16:34:04 INFO [Crawler.setElementAction.661] set action to back
16:34:04 INFO [Crawler.crawl.813] skip beforeElementAction
16:34:04 INFO [Crawler.doElementAction.966] current element = com.xxx.xxx.MainListPresenter_Back-16
16:34:04 INFO [Crawler.doElementAction.967] current index = 15
16:34:04 INFO [Crawler.doElementAction.968] current action = back
16:34:04 INFO [Crawler.doElementAction.969] current url = com.xxx.xxx-MainListPresenter
16:34:04 INFO [Crawler.doElementAction.970] current xpath = Back-16
16:34:04 INFO [Crawler.doElementAction.971] current tag path = com.xxx.xxx-MainListPresenter_Back-16
16:34:04 INFO [Crawler.doElementAction.972] current file name = com.xxx.xxx-MainListPresenter_
16:34:04 INFO [Crawler.doElementAction.973] current uri = com.xxx.xxx-MainListPresenter
16:34:04 WARN [Crawler.back.1057] two back action too close
请问下大神
,我遍历我们apk时,在某一个页面停留一会就返回直接返回首页,看报告中有上面的异常信息,这可能是什么错误呢?
别喊大神. 直接喊名字即可
提示异常的表示没有截取到当时点击后的page source, 这个就仔细分析了. 肯定是没有正确的遍历导致的.
那这个是工具的问题吗?
因为我就直接运行
java -jar D:\worktools\appcrawler-2.0.0.jar --capability appPackage=,appActivity=
有什么解决办法吗?
没明白怎么使用,是在编写appium的测试代码的时候加入那些配置?有没有详细的示例或者文档,看了在线文档,没明白要怎么用
请问支持WEBVIEW吗?
赞一个 . 看到写后面还要用kotlin, 特地去google了一把这个是啥, 哈哈.
配置文件指定了账号和密码,但是登录进去了主界面之后,点了两个导航按钮,就退出了,执行结束。不知道是不是自己的配置文件写的有些问题。
在哪里能看插件怎么写呢?我没有找到啊
思寒,html报告在浏览器打开后图片显示不出来....,在报告的文件夹里图片都是正常显示的
好吧,图片没显示出来是因为浏览器的问题,在chrome正常,在edge和ie11显示不出来
这个不错,我现在公司,也在写遍历测试,算完成50%,一半一半。你这个我使用下。看了文档,就是用例格式的yaml,就是没有类似jason格式解析,比较不好判断哪里出错吧
在线帮助文档:
Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: A new session could not be created. Details: Appium's IosDriver does not support xcode version 8.3.1. Apple has deprecated UIAutomation. Use the "XCUITest" automationName capability instead. (WARNING: The server did not provide any stacktrace information)
启动appium1.6.4beta 运行appcrawler
有什么办法解决吗 ?
答案就在你贴的错误提示里 今天群里也有人反馈这个 他自己自行解决了
我知道是Use the "XCUITest" automationName capability instead
但是还没有思路 ?
"platformName": "IOS",
"platformVersion": "10.3",
"bundleId": "com.banmatripDev",
"deviceName": "iPhone 7",
"udid": "12c601bed9df7710139c",
"automationName": "XCUITest"
结果还是这样滴 ?
你这个是从什么地方配置的, 目前的配置是yaml格式吧.
遍历过程中有没有做 ANR CRASH 闪退的检查点
自己写规则断言就行
你好,我想问下,我用了-o,思维导图是日志中的哪个文件啊?
发现 如果 每次都是用 -o result/
来指定结果保存目录的话,jpg xml dom 等只是会追加到该目录下,不覆盖以前的结果记录。但是这个index.html 确是每次都覆盖替换为最新结果的。
结果导致以往的index关联资源就不可查了。
你还是换目录名字吧. 重复覆盖这个不能保证总是追加. 对结果的merge我以后再支持.
带脚本的怎么运行啊
appcrawler -c conf/xueqiu.json -p android -o result/
有没有带配置
带脚本运行的
例如登录脚本
使用pagesource可以获取到WebView内H5控件信息吗
pagesource可以导出不可视控件么?
马着学习,谢谢。
你好,可以指定点击哪些控件吗,因为现在所有的都点击,执行速度有些慢,如果可以的话是怎么指定?谢谢!
66楼 已删除
请问yaml配置文件里的参数有具体说明文档吗?网盘里的视频和在线帮助文档没有具体的说明。defineUrl和baseUrl不理解,一开始没配置就报错了,后来发现是必填的。。。
mark下. 下个版本解决. 这的确是个问题. 配置文件我更新到帖子里了
这个“完整”有多完整?
包含了appcrawler 可以支持的全部定制参数么?
能整理个参数的文字说明不?
或者源码里可以查到可被使用的参数的吧,求指教源码哪个路径下存放了appcrawler的自定义可配置参数定义的?
CrawlerConf.scala文件
有段时间没看,都到2.0版本了,收藏下回头看
我的yml是这么配置的,但是跑起来并不生效还是会点击相应的列表内容。这是怎么回事儿。字段变了吗?
blackList:
- ".*下载.*"
- ".*发现.*"
有人遇到过下面这个错误吗?密码输入完后输入法界面一直在,没有隐藏,登陆不了。而账号输入之后就会隐藏起来。
14:32:36 INFO [Crawler.doElementAction.1005] need input zxcvbn
14:32:36 INFO [AppiumClient.findElementByUrlElement.378] find by xpath= //*[@resource-id="android:id/content"]/*[@resource-id="com.honeywell.iaq:id/activity_login"]/*[@resource-id="com.honeywell.iaq:id/ll_group"]/*[@resource-id="com.honeywell.iaq:id/password"]
14:32:36 INFO [AppiumClient.retry.162] retry execute success
14:32:36 INFO [AppiumClient.findElementByUrlElement.384] find by xpath success
14:32:36 INFO [Crawler.doElementAction.1012] mark android_31/5_com.honeywell.iaq-LoginActivity_content-activity_login-ll_group-phone_number.ori.jpg to android_31/5_com.honeywell.iaq-LoginActivity_content-activity_login-ll_group-phone_number.ps.jpg
14:32:36 INFO [AppiumClient.mark.243] platformName=android
14:32:36 INFO [AppiumClient.mark.244] getScreenshot
14:32:36 INFO [AppiumClient.mark.257] write png android_31/5_com.honeywell.iaq-LoginActivity_content-activity_login-ll_group-phone_number.ori.jpg
14:32:36 INFO [Crawler.apply.1027] input zxcvbn
14:32:42 WARN [AppiumClient.retry.166] message=An unknown server-side error occurred while processing the command. Original error: Soft keyboard not present, cannot hide keyboard (WARNING: The server did not provide any stacktrace information)
你好,请问你的问题解决啦么
请问这是什么问题,我没有加配置文件直接跑的
怎么做游戏的自动化遍历,有没有思路或者方案?请指点!!!
1,非 sikuli 的那种方案,sikuli需要提前记录截图,然后在做点击输入,这种并不是自动化遍历
2,用ocr 识别按钮文字,在做点击,ocr本身识别率不高,切较难做到
十分期待下个版本,
,请问一下,如果点击过程中退出了app,如何配置再进入呢?或者是调到了其他app,比如充值,如何再配置回到被测app呢?
能否分享下设计思路、我想试试整个python版本的, 最近正在搞tensorflow想做个自动遍历UI的东东,结果发现楼主这直接有了。
PS:没在北京参加不了715大会进不了QQ群好忧桑- -
那个是答疑群. 只服务对社区有帮助的同学, 你申请的时候附上一些你帮助过社区的事情也可以加进去的.
执行遍历一段时间后,instruments进程达到了3个多G。请问这个是什么原因导致的,能否优化呢。
appcrawler控制台乱码怎么解决
error: Failed to start an Appium session, err was: Error: Command failed: C:\windows\system32\cmd.exe /s /c "E:\software\4.2_SDK\android-sdk-new_4.2\android-sdk-new\platform-tools\adb.exe -s ABCDEF shell "ps 'uiautomator'""
android N上不支持这么查找uiautomator process啊?怎么破?
这是appium的问题, 跟AppCrawler无关. appium新版本会去解决这个问题的. 或者你自己定制下appium
如果使用macaca
还是要依赖appium吗?
appium: "http://127.0.0.1:4723/wd/hub"
automationName: uiautomator2
automationName: macaca
appium 填写macaca的url吗?
yaml文件的具体配置有没有说明文档啊 我这边配置完运行 报出null pointer exception异常
有限选项需要给默认值
如果什么都不写都是null 这个我也注意了 下个版本会彻底修复
期待python版本的
期待python版+1
请问下如何在yaml配置文件中startupActions中配置去点击某个id的控件(已知控件的id)
我使用2.0.1的jar
java -jar appcrawler-2.0.1.jar -c 123.yml -a guahao.apk 遇到下面错误
应该解决?
15:51:47 ERROR [AppiumClient.asyncTask.149] exception
15:51:47 ERROR [AppiumClient.asyncTask.150] org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 71 milliseconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'LAPTOP-38CHF3G1', ip: '192.168.118.213', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_91'
Driver info: io.appium.java_client.android.AndroidDriver
Capabilities [{appPackage=com.greenline.guahao, reuse=3, noReset=true, dontStopAppOnReset=true, deviceName=c1661029, platform=LINUX, androidInstallTimeout=180000, desired={app=D:\WorkSpace\appcrawler\appcrawler-1.7.1\bin\guahao.apk, appPackage=com.greenline.guahao, reuse=3, appium=, noReset=true, dontStopAppOnReset=true, deviceName=192.168.0.102:5555, launchTimeout=120000, appActivity=.home.HomeActivity, androidInstallTimeout=180000, newCommandTimeout=120, autoLaunch=true, platformVersion=, automationName=uiautomator2, autoWebview=false, platformName=Android}, newCommandTimeout=120, platformVersion=5.0.2, webStorageEnabled=false, automationName=uiautomator2, browserName=Android, takesScreenshot=true, javascriptEnabled=true, autoWebview=false, platformName=Android, app=D:\WorkSpace\appcrawler\appcrawler-1.7.1\bin\guahao.apk, networkConnectionEnabled=true, appium=, warnings={}, databaseEnabled=false, launchTimeout=120000, appActivity=.home.HomeActivity, autoLaunch=true, locationContextEnabled=false}]
Session ID: 01e3d0b8-e106-4edc-bb91-7a8d7c8366d8
15:51:47 ERROR [AppiumClient.asyncTask.151] java.util.concurrent.FutureTask.report(Unknown Source)
java.util.concurrent.FutureTask.get(Unknown Source)
com.xueqiu.qa.appcrawler.WebDriver$$anonfun$2.apply(WebDriver.scala:134)
scala.util.Try$.apply(Try.scala:192)
com.xueqiu.qa.appcrawler.WebDriver$class.asyncTask(WebDriver.scala:125)
com.xueqiu.qa.appcrawler.AppiumClient.asyncTask(AppiumClient.scala:28)
com.xueqiu.qa.appcrawler.AppiumClient$$anonfun$getPageSource$1.apply$mcVI$sp(AppiumClient.scala:307)
scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:166)
com.xueqiu.qa.appcrawler.AppiumClient.getPageSource(AppiumClient.scala:306)
com.xueqiu.qa.appcrawler.Crawler.refreshPage(Crawler.scala:525)
com.xueqiu.qa.appcrawler.Crawler.runStartupScript(Crawler.scala:205)
com.xueqiu.qa.appcrawler.Crawler.start(Crawler.scala:139)
com.xueqiu.qa.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:313)
com.xueqiu.qa.appcrawler.AppCrawler$.main(AppCrawler.scala:303)
com.xueqiu.qa.appcrawler.AppCrawler.main(AppCrawler.scala)
Exception in thread "main" java.lang.NullPointerException
at scala.collection.immutable.StringOps$.length$extension(StringOps.scala:48)
at scala.collection.immutable.StringOps.length(StringOps.scala:48)
at scala.collection.IndexedSeqOptimized$class.isEmpty(IndexedSeqOptimized.scala:27)
at scala.collection.immutable.StringOps.isEmpty(StringOps.scala:30)
at scala.collection.TraversableOnce$class.nonEmpty(TraversableOnce.scala:109)
at scala.collection.immutable.StringOps.nonEmpty(StringOps.scala:30)
at com.xueqiu.qa.appcrawler.Crawler.refreshPage(Crawler.scala:528)
at com.xueqiu.qa.appcrawler.Crawler.runStartupScript(Crawler.scala:205)
at com.xueqiu.qa.appcrawler.Crawler.start(Crawler.scala:139)
at com.xueqiu.qa.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:313)
at com.xueqiu.qa.appcrawler.AppCrawler$.main(AppCrawler.scala:303)
at com.xueqiu.qa.appcrawler.AppCrawler.main(AppCrawler.scala)
想问下startupActions被注释掉了,是已经不能用了吗,如果可以继续用的话,想要实现查找某个控件并点击应该怎么写,我试了用driver.findElement(By.XX).click()或者see().tap()不行了
Ps:我们应用启动页和登录页都是LoginActivity,并且debug包在启动页会有一个弹窗要求选择进入什么环境。现在遇到了一个问题就是在启动页点击选择服务器后进入登录页后,说是所有element都被点击了,然后找不到返回键,结果就直接退出应用,不知道有没人有类似情景,这个应该怎么处理呢
新版本推荐用testcase配置项
94楼 已删除
原来如此,改成用testcase配置就成功了,多谢~
我与你遇到一样的问题,请问你解决了吗
get page source success
但是抛出下面的错误,问题出在哪?有遇到这种情况的解答一下
用2.1版本试试
谢谢你的解答!
之前的问题是解决了, 执行一段时间后报了新的错误
日志里有生成132_com.greenline.guahao-HomeActivity_android.view.View-android.widget.ListView-android.view.View-javascript这个文件,但是空的
13:59:38 INFO [AppiumClient.mark.237] read from Android_43/132_com.greenline.guahao-HomeActivity_android.view.View-android.widget.ListView-android.view.View-javascript:;-android.view.View.clicked.png
13:59:38 ERROR [Crawler.crawl.196] crawl not finish, return with exception
13:59:38 ERROR [Crawler.crawl.197] Can't read input file!
13:59:38 ERROR [Crawler.crawl.198] IIOException: Can't read input file!
13:59:38 ERROR [Crawler.crawl.199]
13:59:38 ERROR [Crawler.apply.200] javax.imageio.IIOException: Can't read input file!
13:59:38 ERROR [Crawler.apply.200]
at javax.imageio.ImageIO.read(Unknown Source)
13:59:38 ERROR [Crawler.apply.200]
at com.testerhome.appcrawler.driver.AppiumClient.mark(AppiumClient.scala:238)
13:59:38 ERROR [Crawler.apply.200]
at com.testerhome.appcrawler.Crawler.doElementAction(Crawler.scala:992)
13:59:38 ERROR [Crawler.apply.200]
at com.testerhome.appcrawler.Crawler.crawl(Crawler.scala:797)
13:59:38 ERROR [Crawler.apply.200]
at com.testerhome.appcrawler.Crawler$$anonfun$1.apply$mcV$sp(Crawler.scala:173)
13:59:38 ERROR [Crawler.apply.200]
at com.testerhome.appcrawler.Crawler$$anonfun$1.apply(Crawler.scala:173)
13:59:38 ERROR [Crawler.apply.200]
at com.testerhome.appcrawler.Crawler$$anonfun$1.apply(Crawler.scala:173)
13:59:38 ERROR [Crawler.apply.200]
at scala.util.Try$.apply(Try.scala:192)
13:59:38 ERROR [Crawler.apply.200]
at com.testerhome.appcrawler.Crawler.crawl(Crawler.scala:173)
13:59:38 ERROR [Crawler.apply.200]
at com.testerhome.appcrawler.Crawler.start(Crawler.scala:157)
13:59:38 ERROR [Crawler.apply.200]
at com.testerhome.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:342)
13:59:38 ERROR [Crawler.apply.200]
at com.testerhome.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:310)
13:59:38 ERROR [Crawler.apply.200]
at com.testerhome.appcrawler.AppCrawler$.main(AppCrawler.scala:90)
13:59:38 ERROR [Crawler.apply.200]
at com.testerhome.appcrawler.AppCrawler.main(AppCrawler.scala)
13:59:38 ERROR [Crawler.crawl.201] create new session
13:59:38 INFO [Crawler.restart.216] restart appium
13:59:38 INFO [Crawler.restart.218] set app to null to restart appium
13:59:38 INFO [Crawler.setupAppium.253] use AppiumClient
Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Requested a new session but one was in progress) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 748 milliseconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'LAPTOP-38CHF3G1', ip: '192.168.118.213', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_91'
Driver info: io.appium.java_client.android.AndroidDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:40)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:249)
at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:131)
at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:144)
at io.appium.java_client.DefaultGenericMobileDriver.(DefaultGenericMobileDriver.java:36)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:114)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:132)
at io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:92)
at com.testerhome.appcrawler.driver.AppiumClient.appium(AppiumClient.scala:160)
at com.testerhome.appcrawler.driver.AppiumClient.(AppiumClient.scala:38)
at com.testerhome.appcrawler.Crawler.setupAppium(Crawler.scala:254)
at com.testerhome.appcrawler.Crawler.restart(Crawler.scala:220)
at com.testerhome.appcrawler.Crawler.crawl(Crawler.scala:204)
at com.testerhome.appcrawler.Crawler.start(Crawler.scala:157)
at com.testerhome.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:342)
at com.testerhome.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:310)
at com.testerhome.appcrawler.AppCrawler$.main(AppCrawler.scala:90)
at com.testerhome.appcrawler.AppCrawler.main(AppCrawler.scala)
101楼 已删除
你的org.xml.sax.SAXParseException的问题还存在吗?咋解决的?
思寒,我这边用2.1.0的时候也会报上面的错误,尝试很多次都会重复org.xml.sax.SAXParseException这同一个错误,用1.8.0的版本是没有问题。
跑的时候没有用conf文件,就是最简单的命令
我跟进下 正在要出问题同学的log和堆栈
期待2.1.0的到来,我还在学习这个工具的用法中,还特别期待yaml的用例(可否在git中放一个例子?)
输入--demo 就会自动生成样例
默默的支持就好
亲,你咋搞定的, 我用testcase也不行呢,能给下案例不
结合LeakCanary和MLeaksFinder的使用例子有没有?
没,我发现还是失败了,在选择服务器的时候,就已经开始了遍历,只是刚好我希望他选择服务器恰好在第一个位置就继续运行下去了
最近工作有变动就没再继续跟这问题
思寒,配置文件.yml在iOS应该怎么配置呢?有例子吗?
我目前遇到的问题:不断重启App,一直只停留在首页,不会遍历。
我的配置如下:
defineUrl:
#一以下是App导航栏Tab按钮的xpath
"//UIToolbar[1]/UIButton[1]/@label"
"//UIToolbar[1]/UIButton[2]/@label"
"//UIToolbar[1]/UIButton[3]/@label"
"//UIToolbar[1]/UIButton[4]/@label"
"//UIToolbar[1]/UIButton[5]/@label"
appWhiteList:
"xxxxx应用的名字"
"//UIToolbar[1]/UIButton[1]/@label"
"//UIToolbar[1]/UIButton[2]/@label"
"//UIToolbar[1]/UIButton[3]/@label"
"//UIToolbar[1]/UIButton[4]/@label"
"//UIToolbar[1]/UIButton[5]/@label"
哦,好吧,我改用1.7.1版本的了,老版本的配置文件还能运行起来,新版本的部分等后续研究吧。
换工作不研究这个了?
这个可以做monkey的深度遍历吗?感觉思路有点像。
换工作耽误了几个月 .大会后重新设计新版本.
好东西学习了
等你新版本,新版本出来之前我先把老版本用好了
请问支持游戏遍历会在什么时候发布呢?
getpagesource返回了空内容 你得查查了
一种可能是appium的bug 特定页面处理不当返回内容为空
119楼 已删除
去github上看看对应的代码行吧
你好,testcase对应的是用例吗?配置文件里面可以配置多个testcase节点吗?
122楼 已删除
123楼 已删除
思寒,现在是不是还不支持长按操作,我看源码里面写着undo,啥时会实现呢
已经支持了
为啥下面的操作执行时成为click操作了
name: login
xpath: //*[@resource-id='xxx/et_phone']
action: 10086
我在配置文件里,加入了启动的参数 startupActions,如下startupActions:
swipe("left")
swipe("left")
swipe("left")
println(driver)
但启动到欢迎界面的时候并没有滑动,而是等待段时间就自动退出了app,看日志是执行了testcase,请问目前的新版本是用testcase参数代替了startupActions吗?
你好,看你的帮助文档是支持swipe("left")的,但是执行的时候却报yaml语法错误,这是什么问题呢
不好意思是,我Yaml写错了。。
使用过程中50%的情况下会出现如下错误, 看到之前有人提过这样的问题,想再次问下,有没有什么好的解决方案?感谢。
文件提前结束。
Exception:
org.xml.sax.SAXParseException
com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
com.testerhome.appcrawler.RichData$.toDocument(RichData.scala:26)
com.testerhome.appcrawler.TemplateTestCase$$anonfun$addTestCase$1$$anonfun$apply$3.apply(TemplateTestCase.scala:64)
org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
org.scalatest.Transformer.apply(Transformer.scala:22)
org.scalatest.Transformer.apply(Transformer.scala:20)
org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186)
org.scalatest.TestSuite$class.withFixture(TestSuite.scala:196)
org.scalatest.FunSuite.withFixture(FunSuite.scala:1560)
org.scalatest.FunSuiteLike$class.invokeWithFixture$1(FunSuiteLike.scala:183)
org.scalatest.FunSuiteLike$$anonfun$runTest$1.apply(FunSuiteLike.scala:196)
org.scalatest.FunSuiteLike$$anonfun$runTest$1.apply(FunSuiteLike.scala:196)
org.scalatest.SuperEngine.runTestImpl(Engine.scala:289)
你好,刚看到有时是应用崩溃了返回了上面的错误,看了下说是会自动生成崩溃的日志,找了好久也没看到啊
配置文件实在太强大了,能不能提供一份完整的配置文件附加使用说明 书? 经过调试后我发现几乎所有的报错都能通过黑白名单(Blacklist,urlblacklist) + 触发条件(triggerActions)这些配置项给绕过去。期待详细配置说明文档。
看对应的代码文件吧. 最近的确很忙. 没时间完善文档了.
因为在拼接字符串的时候,有可能包含中文,utf8中文占3个字节,如果文件名过长,导致系统报错(各大系统默认文件名长度是255) File name too long,appcrawler在创建文件的时候失败,抛出空指针程序无法继续。
2.1.0也是这样吗, 我记得我修改过,没改的花我就更新下。
我用的是2.1.0版本,应该是没更新的;我自己下的源码,编译一份改过的,就没问题了。
安卓和iOS用命令行,已经都运行成功了,感谢思寒
另外有个问题是iOS的yaml配置文件格式是什么?
capability:
automationName: "XCUITest"
这种配置还是有问题
看源代码解决问题了iosCapability。。忽略刚才的问题
运行的时候,老是报这个错,该怎么解决啊?
工具很强大。另外,请问一下,我设置了判断App崩溃的断言,运行过程中app崩了但是报告显示全通过是什么原因?
原理就是拿xml和xpath进行断言了。你可以查查当时的xml。我没数据不好排查。
程序按testcase执行,执行完testcase后如何继续执行monkey遍历? - action:monkey对吗?求指导
xpath: //XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeTable/XCUIElementTypeCell
action: driver.swipe(0.8, 0.8, 0.2, 0.2)
- action: monkey
各位你们好,我用了下遍历工具报了一个错,不知道什么原因,还请指教下。
第一次用,执行命令就是appcrawler -a xx.apk
error: Failed to start an Appium session, err was: Error: Command failed: C:\windows\system32\cmd.exe /s /c "C:\gaoyuan\work\sdk\platform-tools\adb.exe -s 978f0bd1 shell "ps 'uiautomator'""
info: [debug] Error: Command failed: C:\windows\system32\cmd.exe /s /c "C:\gaoyuan\work\sdk\platform-tools\adb.exe -s 978f0bd1 shell "ps 'uiautomator'""
at ChildProcess.exithandler (child_process.js:751:12)
at ChildProcess.emit (events.js:110:17)
at maybeClose (child_process.js:1016:16)
at Process.ChildProcess._handle.onexit (child_process.js:1088:5)
info: [debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: Command failed: C:\windows\system32\cmd.exe /s /c \"C:\gaoyuan\work\sdk\platform-tools\adb.exe -s 978f0bd1 shell \"ps 'uiautomator'\"\"\n)","killed":false,"code":1,"signal":null,"cmd":"C:\windows\system32\cmd.exe /s /c \"C:\gaoyuan\work\sdk\platform-tools\adb.exe -s 978f0bd1 shell \"ps 'uiautomator'\"\"","origValue":"Command failed: C:\windows\system32\cmd.exe /s /c \"C:\gaoyuan\work\sdk\platform-tools\adb.exe -s 978f0bd1 shell \"ps 'uiautomator'\"\"\n"},"sessionId":null}
info: &-- POST /wd/hub/session 500
error: Failed to start an Appium session, err was: Error: Command failed: C:\gao
yuan\sdk\platform-tools\adb.exe -s 978f0bd1 install "C:\Program Files (x86)\Appi
um\node_modules\appium\build\unicode_ime_apk\UnicodeIME-debug.apk"
Failed to install C:\Program Files (x86)\Appium\node_modules\appium\build\unicod
e_ime_apk\UnicodeIME-debug.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Pac
kage io.appium.android.ime signatures do not match the previously installed vers
ignoring!]
这个问题有人遇到吗?求教
之前安装了签名不同的输入法吧
确实用appium的时候有装一个输入法,但是应用中没有找到此程序的卸载
我换了一个手机试了下,不报之前的输入法的错了,报个一个其他错:
error: Failed to start an Appium session, err was: Error: Permission to start ac
tivity denied.
你的Activity不对。不是每个Activity都有启动权限的,你得找入口Activity
感谢你的工具!请教个问题,当某个界面上,uiautomator获取dump文件遇到问题时,appium会遇到500 error,此时appcrawler会出exception。
想问一下此时如果想直接fail该动作,然后自动back,再继续,如果要达到这样的效果,我需要怎么配置?
appium exception log:
debug] [MJSONWP] Responding to client with driver.getWindowSize() result: {"width":480,"height":854}
[HTTP] &-- GET /wd/hub/session/a66cad36--adba-cfd/window/current/size 200 13 ms - 98
[HTTP] --& GET /wd/hub/session/a66cad36--adba-cfd/source {}
[debug] [MJSONWP] Calling AppiumDriver.getPageSource() with args: ["a66cad36--adba-cfd"]
[debug] [AndroidBootstrap] Sending command to android: {"cmd":"action","action":"source","params":{}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {"cmd":"action","action":"source","params":{}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: source
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Command returned error:java.lang.RuntimeException: Failed to Dump Window Hierarchy
[debug] [AndroidBootstrap] Received command result from bootstrap
[HTTP] &-- GET /wd/hub/session/a66cad36--adba-cfd/source 500 204 ms - 154
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {"value":"Failed to Dump Window Hierarchy","status":13}
appcrawler exception log:
14:26:03 ERROR [AppiumClient.asyncTask.150] exception
14:26:03 ERROR [AppiumClient.asyncTask.151] org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 91 milliseconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'sh-jikun.zenmen.corp', ip: '10.241.53.72', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.6', java.version: '1.8.0_131'
Driver info: io.appium.java_client.android.AndroidDriver
Capabilities [{appPackage=com.halo.wifikey.wifilocating, reuse=3, noReset=true, dontStopAppOnReset=true, deviceName=8b26684b, platform=LINUX, deviceUDID=8b26684b, androidInstallTimeout=180000, desired={app=, appPackage=com.halo.wifikey.wifilocating, reuse=3, appium=http://10.241.19.57:4821/wd/hub, noReset=true, dontStopAppOnReset=true, deviceName=10.241.19.57:4821, launchTimeout=120000, appActivity=com.lantern.launcher.ui.MainActivity, androidInstallTimeout=180000, newCommandTimeout=120, autoLaunch=true, platformVersion=, automationName=Appium, autoWebview=false, platformName=Android, udid=8b26684b}, newCommandTimeout=120, platformVersion=4.4.4, webStorageEnabled=false, automationName=Appium, takesScreenshot=true, javascriptEnabled=true, autoWebview=false, platformName=Android, udid=8b26684b, deviceManufacturer=OPPO, app=, deviceScreenSize=480x854, networkConnectionEnabled=true, appium=http://10.241.19.57:4821/wd/hub, warnings={}, databaseEnabled=false, launchTimeout=120000, appActivity=com.lantern.launcher.ui.MainActivity, autoLaunch=true, locationContextEnabled=false, deviceModel=A31c}]
Session ID: a66cad36--adba-cfd
14:26:03 ERROR [AppiumClient.asyncTask.152] java.util.concurrent.FutureTask.report(FutureTask.java:122)
java.util.concurrent.FutureTask.get(FutureTask.java:206)
com.testerhome.appcrawler.driver.WebDriver$$anonfun$2.apply(WebDriver.scala:135)
scala.util.Try$.apply(Try.scala:192)
com.testerhome.appcrawler.driver.WebDriver$class.asyncTask(WebDriver.scala:126)
com.testerhome.appcrawler.driver.AppiumClient.asyncTask(AppiumClient.scala:24)
com.testerhome.appcrawler.driver.AppiumClient$$anonfun$getPageSource$1.apply$mcVI$sp(AppiumClient.scala:302)
scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:166)
com.testerhome.appcrawler.driver.AppiumClient.getPageSource(AppiumClient.scala:301)
com.testerhome.appcrawler.Crawler.refreshPage(Crawler.scala:538)
com.testerhome.appcrawler.Crawler.start(Crawler.scala:140)
com.testerhome.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:342)
com.testerhome.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:310)
com.testerhome.appcrawler.AppCrawler$.main(AppCrawler.scala:90)
com.testerhome.appcrawler.AppCrawler.main(AppCrawler.scala)
Exception in thread "main" java.lang.NullPointerException
at scala.collection.immutable.StringOps$.length$extension(StringOps.scala:48)
at scala.collection.immutable.StringOps.length(StringOps.scala:48)
at scala.collection.IndexedSeqOptimized$class.isEmpty(IndexedSeqOptimized.scala:27)
at scala.collection.immutable.StringOps.isEmpty(StringOps.scala:30)
at scala.collection.TraversableOnce$class.nonEmpty(TraversableOnce.scala:109)
at scala.collection.immutable.StringOps.nonEmpty(StringOps.scala:30)
at com.testerhome.appcrawler.Crawler.refreshPage(Crawler.scala:541)
at com.testerhome.appcrawler.Crawler.start(Crawler.scala:140)
at com.testerhome.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:342)
at com.testerhome.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:310)
at com.testerhome.appcrawler.AppCrawler$.main(AppCrawler.scala:90)
at com.testerhome.appcrawler.AppCrawler.main(AppCrawler.scala)
手动使用uiautomatorview获取问题页面遇到如下异常,其它页面正常
Error while parsing UI hierarchy XML file: Invalid ui automator hierarchy file.
思寒老师,这个配置提示有些看不懂了,麻烦请教一下
哪里有配置文件的详细说明?
12:33:47 INFO [Runtimes$.eval.65] driver.swipe(0.9, 0,5, 0.1, 0.5)
&console&:12: error: overloaded method value swipe with alternatives:
(startX: Double,endX: Double,startY: Double,endY: Double)Option[_] &and&
(direction: String)Unit
cannot be applied to (Double, Int, Int, Double, Double)
driver.swipe(0.9, 0,5, 0.1, 0.5)
中提及了此贴
152楼 已删除
支持macaca的哪个版本呢?
2.1.1版本刚做了appium的1.7.1的适配,Macaca的最新版本还没做
有游戏APP遍历?想了解下,是类似Gautomator这种类型 还是只是monkey的呀?
这个厉害了!
win7下appium进程会无响应,JAVA吃的内存会越来越多,有什么办法吗
新版本已经优化了, 还没正式发布,还在内部试用中。
跑的Android apk,在输入的时候提示这个
00:02:04 ERROR [AppiumClient.asyncTask.153] exception
00:02:04 ERROR [AppiumClient.asyncTask.154] org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: java.lang.NullPointerException
at android.support.test.uiautomator.UiObject2.setText(UiObject2.java:601)
at io.appium.uiautomator2.model.UiObject2Element.setText(UiObject2Element.java:129)
at io.appium.uiautomator2.handler.SendKeysToElement.safeHandle(SendKeysToElement.java:83)
at io.appium.uiautomator2.handler.request.SafeRequestHandler.handle(SafeRequestHandler.java:56)
at io.appium.uiautomator2.server.AppiumServlet.handleRequest(AppiumServlet.java:202)
at io.appium.uiautomator2.server.AppiumServlet.handleHttpRequest(AppiumServlet.java:193)
at io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:44)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:435)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:250)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1294)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:911)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:611)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:514)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:468)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:438)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:140)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
at java.lang.Thread.run(Thread.java:841)
(WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
思寒,appcrawler目前的2.1.0版本,支持新老版本的界面对比(Doing) 还没有开放吗
这个也是本文作者写的吗
你好 请问你File "C:\Users\jxiong\AppData\Local\Programs\Python\Python36\lib\configparser.py", line 1012, in _read
for lineno, line in enumerate(fp, start=1):这个问题怎么改的啊?看到你16年解决过
问题解决了吗 ,我也遇到这个问题了
你好,一些依赖的jar包下不到,怎么解决?谢谢
165楼 已删除
获取iOS的界面经常超时啊 ?
这个什么用?
导入build.sbt工程时,报错如下图,这是什么原因。
后方可回复, 如果你还没有账号请点击这里 。
seveniruby (思寒)
第 104 位会员 /
共收到 156 条回复}

我要回帖

更多关于 找不到虚拟home 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信