运行了脚本执行 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 的页面元素都是可以查看的,还是本机还需要安装什么呢?
没有配置文件,我报了这个错误能否帮忙看下:
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)
我这边也遇到了弹框一直点击不到,然后一直卡在那里,有什么解决办法吗
解决了,mac 和 xcode 升级到最高版本就没问题了
@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
都是真机运行
直接在这篇帖子里面讲一下最近使用 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 需要哪些启动参数吗
遇到这样的报错,你先自己写一段小代码试试看会不会报错,这个报错是 appium 的输出而且是 XCUITest 报的错,应该跟 appcrawler 无关,你先试着定位问题。
我用的是 npm 安装的 appium,用 appium-desktop 也 OK 不报错的,你这个报错是 XCUITest 报错的,你看看你的 XCode 版本号是多少
apiium 是使用终端里面的还是使用 appium-desktop 的 那个里面的参数包含哪些可以也贴下吗?我的报一个这样的错误:[XCUITest] Error: Platform version must be 9.3 or above. '9.2' is not supported. 但是我已经使用了 iOS 10.0 的手机啦
我这边所有的弹框都拿不到数据。也是显示
get page source error
弹框不仅仅系统的弹框,估计写在 window 上面的弹框都遍历到数据
想知道你们解决弹框问题的
谢谢 根据你的回答 我升级 xcode 就解决了 我有个问题想请教 现在你定位 ios 的元素 用的什么工具 appium 的 inspector xcode8 已经不支持了 你使用的什么工具呢?
我安装 appinspector 这个工具 macaca doctor 检查没问题 但启动 appinspector 打开浏览器 报出 server internal error 纠结啊