运行了脚本执行 iOS 遍历,脚本命令是 java -jar appcrawler-2.0.1.jar -a /Users/carrie/Downloads/***.ipa --capability automationName=XCUITest -p ios -c config.yml,WDA 和 app 安装成功并连接成功后,手机上的 app 启动,但界面停留在进入 app 的初始页面没有进行任何操作,appcrawler 在 refresh page 时提示:
2017-05-09 10:46:11 ERROR [AppiumClient.asyncTask.145] 20 seconds timeout
2017-05-09 10:46:11 TRACE [AppiumClient.apply$mcVI$sp.336] get page source error
appium 一直提示:
[xmldom error] element parse error: TypeError: source.indexOf is not a function
@#[line:0,col:undefined]
[xmldom error] element parse error: TypeError: source.indexOf is not a function
@#[line:0,col:undefined]
请问有同学遇到过这样的问题吗?是因为 WDA 返回的页面 DOM 结构解析不成功?我手动运行 WDA 在 mac 上看 app 的页面元素都是可以查看的,还是本机还需要安装什么呢?
解决了,mac 和 xcode 升级到最高版本就没问题了
直接在这篇帖子里面讲一下最近使用 appcrawler 对 iOS 真机进行自动化遍历的进展吧,看看其他同学有没有遇到类似情况。定义了遍历配置的 yml 文件,因为 noReset 定义为 false,所以每次都是新装;按照我在配置文件中的定义,进入 app 首页后的操作是首先允许消息推送,然后进入登录页,输入用户名密码后点击登录。
1.但是对是否允许发送推送的系统弹框,虽然 yml 文件定义的是允许,仍然点击了 “不允许” 按钮;
2.输入了用户名和密码后,没有点击登录就结束了遍历,也没有报错。仔细看了 appcrawler 的日志,有一句日志如下:
2017-05-10 18:08:17 ERROR [Crawler.isExit.372] appNameRecord last 5 List(xx 开发版, xx 开发版, xx 开发版, xx 开发版, xx 开发版)
看了一下 appcrawler 的源代码,在 Crawler.scala 文件中 isExit() 函数体找到这样一句:
if (appNameRecord.last(5).forall(conf.appWhiteList.contains(_) == false)) {
log.error(s"appNameRecord last 5 ${appNameRecord.last(5)}")
return true
}
看来是输入密码完成后,判断是否需要退出遍历的时候中了这一句判断退出了,以至于点击登录按钮那一步根本没有进行。至于原因还不知道。
@Carrue 可以贴一下 ios 需要哪些启动参数吗
@charles
有配置文件:
java -jar appcrawler-2.0.1.jar --capability udid=d231d751d21a49b9e74baa8063b0d105ce93d76b,automationName=XCUITest -p ios -c config.yml
没有配置文件:
java -jar appcrawler-2.0.1.jar -a xxx.ipa --capability udid=d231d751d21a49b9e74baa8063b0d105ce93d76b,automationName=XCUITest,platformVersion=10.1.1
都是真机运行
apiium 是使用终端里面的还是使用 appium-desktop 的 那个里面的参数包含哪些可以也贴下吗?我的报一个这样的错误:[XCUITest] Error: Platform version must be 9.3 or above. '9.2' is not supported. 但是我已经使用了 iOS 10.0 的手机啦
我用的是 npm 安装的 appium,用 appium-desktop 也 OK 不报错的,你这个报错是 XCUITest 报错的,你看看你的 XCode 版本号是多少
遇到这样的报错,你先自己写一段小代码试试看会不会报错,这个报错是 appium 的输出而且是 XCUITest 报的错,应该跟 appcrawler 无关,你先试着定位问题。
谢谢 根据你的回答 我升级 xcode 就解决了 我有个问题想请教 现在你定位 ios 的元素 用的什么工具 appium 的 inspector xcode8 已经不支持了 你使用的什么工具呢?
我安装 appinspector 这个工具 macaca doctor 检查没问题 但启动 appinspector 打开浏览器 报出 server internal error 纠结啊
没有配置文件,我报了这个错误能否帮忙看下:
2017-09-26 15:32:12 INFO [Crawler.setupAppium.253] use AppiumClient
Exception in thread "main" org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Platform version must be 9.3 or above. '9.2' is not supported. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 302 milliseconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'localhost', ip: '127.0.0.1', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.5', java.version: '1.8.0_91'
Driver info: io.appium.java_client.ios.IOSDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
我这边所有的弹框都拿不到数据。也是显示
get page source error
弹框不仅仅系统的弹框,估计写在 window 上面的弹框都遍历到数据
想知道你们解决弹框问题的
我这边也遇到了弹框一直点击不到,然后一直卡在那里,有什么解决办法吗