Appium mobile: setValue 方式无法输入中英文字符

Evan · 2014年02月20日 · 最后由 思寒_seveniruby 回复于 2014年02月20日 · 2038 次阅读

我想在 textbox 里面输入一些中文,平台是 android 4.3,Appium 版本是 0.15,打算用 setValue 来实现,但是现在连英文都无法输入,报 501 错误,错误如下:

代码如下:
js = (JavascriptExecutor) driver();
HashMap inputObject = new HashMap();
//inputObject.put("element", ((RemoteWebElement) ele).getId();
inputObject.put("element", id);
inputObject.put("value", "123");
js.executeScript("mobile: setValue", inputObject);

请问谁知道是什么原因吗?

共收到 6 条回复 时间 点赞
Evan #2 · 2014年02月20日 Author

#1 楼 @lihuazhang 那是用 seveniruby 介绍的这个方法吗?

seveniruby 31 楼 , 1 月前 喜欢
#28 楼 @spikeshen 呵呵,解决了.edittext 继承自 textview, 支持我上面列举的方法.
第一个坑是 ctrl+v 对应的 event 其实是 meta_ctrl_mask+v, 好几个 ctrl 相关的 event, 当时没测试这个.

第二个坑是搜狗输入法, 搜狗输入法会截获 ctrl+v, 会让你的输入变成了 v. 所以需要切换为系统默认的输入法.

两个大坑
另外 appium 是支持发送 keyevent 的. 我会补充对应的测试用例给官方. 不容易啊.

但是这里我有两点不明白的地方,麻烦帮忙解答下:
一是 ctrl+v 的复制源在哪里?就是我要粘贴的中文字符串是从哪里来的啊?
二是 怎么样实现 executeScript 两个及以上按键同时输入啊?就是 ctrl +v 的组合键 怎么按下啊? 我查了下 ctrl 的件码是 28672, V 的键码是 50, 怎么组合呢?

Evan #3 · 2014年02月20日 Author

#2 楼 @sundaxian

这样子行吗?

js = (JavascriptExecutor) driver();
HashMap keycodeObj = new HashMap();
keycodeObj.put("keycode", 28672);
keycodeObj.put("keycode", 50);
js.executeScript("mobile: keyevent", keycodeObj);

#3 楼 @sundaxian 应该可以 我是用 ruby 写的, 论坛上有 ppt 介绍了这个 issue

Evan #5 · 2014年02月20日 Author

#4 楼 @seveniruby 我没找到,你知道 topic id 是多少吗?

#5 楼 @sundaxian 用论坛的搜索试试

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册