你测试下, 如果通过我就提个补丁给官方. 我这边没 4.4 的测试环境
你还是做个视频备忘吧. 呵呵
貌似官方代码的 bug, 他们会判断 android 的 sdk 目录, 找到一个跟你的手机 sdk 一致的目录.
但是里面只保存了最高到 4.3 的版本号, 你的 4.4 会出问题.
你把这段代码修改下, 加入 4.4 估计就可以了.
exports.getAndroidPlatform = function() {
var androidHome = process.env.ANDROID_HOME;
if (typeof androidHome !== "string") {
logger.error("ANDROID_HOME was not exported!");
return null;
}
var locs = ['android-4.2', 'android-17', 'android-4.3', 'android-18'];
var res = null;
_.each(locs, function(loc) {
var platforms = path.resolve(androidHome , 'platforms')
, platform = loc;
if (fs.existsSync(path.resolve(platforms, platform))) {
res = [platform, path.resolve(platforms, platform)];
}
});
return res;
};
#3 楼 @lihuazhang 到时候我们两个讲吧, 分开讲 android 和 ios 的环境配置
#28 楼 @lihuazhang espresso 只是比 instrumentation 好些, 但本质上还是和 instrumentation 的架构一样, 替代不了验收测试. 还是要靠 uiautomator 这种框架. 我觉得是指望不上了. robotium 还有点黑盒测试的功能. 我觉得 robotium 挺适合封装为 webdriver 的, 有希望可以集成到 appium 或者 selenium3
#25 楼 @lihuazhang 现在封装的还不彻底, bug 也比较多, 文档也不是特别的齐全 (相对于其他框架来说, 已经是最全的了)
#24 楼 @lihuazhang 他们是蛮期待 espresso 的, 我看 calabash-android 是基于 robotium 的, 使用 robotium 的 rc 模式, 我觉得他们封装 robotium 比封装 selendroid 更好些. robotium 还是很强大的
#21 楼 @lihuazhang 我提了一个 issue 给官方, bootstraponline 给了我回复 .https://github.com/appium/appium/issues/1665
跟我之前的建议一样.
我今天编译了那个 utf7IME, 并安装到手机了. 理论上在 wd 脚本中直接调用他的一个库方法就可以了.
不过他用 java 实现的, 我用 jruby 调用一直出错, 这个只能让其他同学试试 java 的是否好用了..
另外, 我读了下 UTF7IME 的代码, 他也只是调用了 commitText 方法, 这个其实可以集成到 appium 里面去. 这样就可以做成跟 ios 输入中文一样的效果了.
从最近的 appium 改动来看, 他们还是重 ios, android 上貌似没多少很好的贡献者.
#4 楼 @rockchensir 我们之前翻译了文档, 你可以先看看翻译的中文文档.
#6 楼 @lihuazhang @mark 你估计是 windows 吗, windows 没有 sudo android 也没有
#2 楼 @lihuazhang 我记得 selenium 貌似而已支持移动上的浏览器了, 不过我没研究过
#21 楼 @lihuazhang 问题是 android 不行, uiautomator 肯定是不信了, instrumentation 也许可以
另外一个思路是, 尝试直接调用输入法 service
http://developer.android.com/reference/android/view/inputmethod/InputConnection.html#commitTextjava.lang.CharSequence(, int)
或者借用黏贴板技术
我提了一个 issue 给官方, 看他们是否提供支持
https://github.com/appium/appium/issues/1665
发现了一个比较挫的解决方案
https://github.com/sumio/uiautomator-unicode-input-helper
作者是写了一个输入法, 然后把 utf8 编码先解码, 再发给输入法, 输入法再编码进去. 这个方法很挫.
期待更 hack 的方法.
#25 楼 @softblank 你试验下修改端口 然后使用-U 指定不同的设备, 我看代码里面这样做是可以的. 有效果给个反馈吧
#1 楼 @lihuazhang 我还是回复了他们, 说我没完整的环境, 没法测试, 所以不敢提交代码
我在对应的 commit 上给他们回复了. 他们这样回复了我..
seveniruby commented on 686a16a 13 hours ago
uiautomator already exist in api 16
jlipps commented on 686a16a 10 hours ago
ah. want to submit a pull request with the change then?
jlipps commented on 686a16a 10 hours ago
:-)
#49 楼 @lihuazhang 9 点开始, 岂不是要讲到 11 点. 我们 11 点没关系, 到时候听的人估计都睡着了吧.
#19 楼 @lihuazhang
看了下代码, 貌似 udid 也支持 android
androidCommon.prepareActiveDevice = function(cb) {
this.adb.getDevicesWithRetry(function(err, devices) {
if (err) return cb(err);
var deviceId = null;
if (this.udid) {
if (!_.contains(_.pluck(devices, 'udid'), this.udid)) {
return cb(new Error("Device " + this.udid + " was not in the list " +
"of connected devices"));
}
deviceId = this.udid;
} else {
deviceId = devices[0].udid;
var emPort = this.adb.getPortFromEmulatorString(deviceId);
this.adb.setEmulatorPort(emPort);
}
logger.info("Setting device id to " + deviceId);
this.adb.setDeviceId(deviceId);
cb();
}.bind(this));
};
#1 楼 @lihuazhang sdk 里面的代码已经足够用了, 我是顺便贴下其他工具的代码, 他这个比 sdk 里面的全, 如果要深入研究 rom 级别的, 会用到这个