Appium appium 中输入中文后切换输入法将软件盘调出以便点击搜索疑问

玻璃夕阳 · 2015年06月16日 · 最后由 luweicheng2009 回复于 2015年08月05日 · 1775 次阅读

最近在学习 appium,连接真机,因为想让其输入中文,故设置了:
capabilities.setCapability("unicodeKeyboard", "True");
capabilities.setCapability("resetKeyboard", "True");

而当在输入框输入中文后,搜索在软键盘中,而 appium 自己得输入法没有 UI,所以想切换输入法,代码思路如下:

//在输入框中输入 “国美第一城”
driver.findElementById("com.fangzhur.app:id/findedt").sendKeys("国美第一城");
Thread.sleep(5000);
//使用 adb shell 切换输入法 - 更改为搜狗输入法
excuteAdbShell("adb shell ime set com.sohu.inputmethod.sogou/.SogouIME");
//再次点击输入框,调取键盘,搜狗键盘被成功调出。
driver.findElementById("com.fangzhur.app:id/findedt").click();
//点击右下角的搜索,即 ENTER 键
Thread.sleep(10000);
((AndroidDriver) driver).sendKeyEvent(AndroidKeyCode.ENTER);
//再次切回 输入法键盘为 Appium unicodeKeyboard,方便下次输入中文
excuteAdbShell("adb shell ime set io.appium.android.ime/.UnicodeIME");

但是在 debug 过程中,执行
excuteAdbShell("adb shell ime set com.sohu.inputmethod.sogou/.SogouIME");
时,DDMS 显示如下:
[2015-06-16 14:38:07 - DeviceMonitor] Adb connection Error:远程主机强迫关闭了一个现有的连接。
[2015-06-16 14:38:12 - DeviceMonitor] Adb connection Error:远程主机强迫关闭了一个现有的连接。
[2015-06-16 14:38:13 - DeviceMonitor] Connection attempts: 1
[2015-06-16 15:00:52 - DeviceMonitor] Adb connection Error:远程主机强迫关闭了一个现有的连接。
[2015-06-16 15:00:53 - DeviceMonitor] Connection attempts: 1
[2015-06-16 15:00:57 - DeviceMonitor] Adb connection Error:远程主机强迫关闭了一个现有的连接。
[2015-06-16 15:00:58 - DeviceMonitor] Connection attempts: 1

当自己手动 cmd 执行 adb shell ime set com.sohu.inputmethod.sogou/.SogouIME 时,可以切换成功。
尝试输入 keyEvent(66),真机没有反应。

关于在 APPIUM 中如何点击隐藏在软件盘中的搜索按钮,请问大神们有什么方法?

另特别感谢群里的大神们,不管我问多么白痴的问题,都有人教我,很感谢大家。

共收到 4 条回复 时间 点赞

添加头像,
记得用 md

尝试直接用 adb shell input keyevent 66调试一下吧,我这边用 appium 的输入法,然后直接从命令行输入 keyevent 是能够调通的。

@anikikun ,在软键盘被调出的情况下,我 cmd 执行 adb shell input keyevent 66,可以搜索,但是 appium 是没有软键盘的啊,必须把键盘调出来,按 keyevent66 才可以。

请问下 excuteAdbShell 这个函数是哪个类里的?

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