问题
最近在使用appium的时候常常会有各种各样的问题,当然log已经的错误提示已经解决了我很多的问题。但是有些问题你如果不去了解它具体的实现方法的话,你是很难去真正明白log信息的意义的。这里就引申到了我们这次要讲的主题了,如何对bootstrap.jar进行调试呢。
方法
实际有过使用UiAutomator或者java开发经验的大概都会了解远程调试。而bootstrap.jar实际也是基于UiAutomator的。首先不了解的朋友可以看看Testerhome的这篇文章 如何使用和调试 android UIAutomator,讲的很详细了。bootstrap.jar的调试实际上也差不多。
- 首先我们得明白appium的原理。我们推送bootstrap.jar以及运行jar都是通过server运行的。所以说我们需要修改部分server的代码 uiautomator.js 这里我们修改
//var args = ["shell", "uiautomator", "runtest", "AppiumBootstrap.jar", "-c",
// "io.appium.android.bootstrap.Bootstrap", "-e", "pkg", this.appPackage, "-e", "disableAndroidWatchers", this.disableAndroidWatchers];
var args = ["shell", "uiautomator", "runtest", "AppiumBootstrap.jar", "-c",
"io.appium.android.bootstrap.Bootstrap", "-e", "debug", "true", "-e", "disableAndroidWatchers", this.disableAndroidWatchers];
我们增加了 -e debug true 就是开启了调试。
运行appium server ,运行client脚本这个时候你就会发现server的log跟平时不同的地方了。
这里显示正在监听某个端口等待调试。
下来的步骤实际上跟前面分享的文章一样。通过monitor获取到监听的端口号。设置IDEA 远程调试
在bootstrap中设置断点,点击调试即可。
总结
多使用调试,你懂得会更多。