Appium Appium 已支持中文输入 (给还不知道已支持中文输入的同学)

xuxu · 2015年01月20日 · 最后由 33521_ 回复于 2017年05月24日 · 3246 次阅读
本帖已被设为精华帖!

Appium 1.3.3 以上。
java:
capabilities 增加下面两项:

capabilities.setCapability("unicodeKeyboard", "True");
capabilities.setCapability("resetKeyboard", "True");

python:

desired_caps["unicodeKeyboard"] = "True"
desired_caps["resetKeyboard"] = "True"
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 27 条回复 时间 点赞

有看到这个参数,但是没注意..原来是支持中文输入了啊。CHANGELOG 也没看出这意思...←_←

虽然支持中文,但是中文输入不会触发点击的事件,导致输入框的内容是直接 send 过去的,会让一些输入框输入之后,点击不了发送

不管怎么样,个人觉得此贴应该加精,解决了我的大问题

#3 楼 @woshizh 如果对于 APP 中的一个输入框中文输入了之后点击发送不了,那其实还是等于没用。还需要我调键盘

xuxu #5 · 2015年01月21日 Author

@wangcityboy @woshizh 有发送按钮的话怎么会无法点击发送。我特意拿手机百度这个 app 测试了搜索功能。

#5 楼 @xuxu 中文是直接 send 到输入框的,但是没有键盘的点击事件,而有些输入框是需要触发输入框的文字输入事件后,此时发送按钮才是处于可点击状态,。

@xuxu @wangcityboy 我没有碰到这个问题。。可能我们是把数据都放在 excel 里面,然后直接调用 excel

#6 楼 @wangcityboy 你点它一下不就完了

赞!!但我后来看了 api 发现 MobileElement 中的 setvalue 可以直接设置中文(仅限于 native 的应用),只要将 driver 设置为 IOSDriver 或者 AndroidDriver,然后将找到的控件强转为 MobileElement,就可以使用 setvalue 直接设置中文了!我觉得这个方法比较好,不知道大家怎么看!

匿名 #11 · 2015年02月06日

Appium1.3.3 之前,自行安装输入法(安装如 D:\AppiumForWindows\Appium\node_modules\appium\build\unicode_ime_apk\UnicodeIME-debug.apk)并设置为默认输入法就可以输入中文。

Appium1.3.3 后,只是增加了支持自动切换到上述输入法:

capabilities.setCapability("unicodeKeyboard", "True");

using a specialized keyboard that allows the text to be passed as ASCII text between Appium and the application being tested.
配置为 true,会自动使用输入法 Appium Android Input Manager for Unicode, 必须要有这个配置才能支持输入中文。

capabilities.setCapability("unicodeKeyboard", "True");

return the keyboard to its original state.without this capability,Unicode keyboard will remain enabled on the device after the tests are completed.
自定义是否还原输入法。

die, 可行,目前是没发现有啥问题。

#6 楼 @wangcityboy 这个你知道怎么解决吗????

@anikikun @wangcityboy @xuxu 我在代码里面加入了 desired_caps["unicodeKeyboard"] = "True"
desired_caps["resetKeyboard"] = "True",但是在执行 textfields = self.driver.find_elements_by_class_name("android.widget.EditText")
textfields[0].send_keys("李大宝"),还是无法输入 “李大宝”,默认输入法是搜狗输入法,代码是在 samplecode 中的 android_contacts.py 直接修改的,请指教

xuxu #15 · 2015年05月24日 Author

@yuwuhen333 版本是否支持?另外运行脚本后,看手机里面能否找到 appium 自带的输入法

#15 楼 @xuxu 手机里面找到了 appium 自带的输入法 Appium Android Input Manager 了,但是报 textfields[0].send_keys("李大宝") 这行的
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe6 in position 0:,修改 textfields[0].send_keys(u"李大宝") 解决问题。请问下,appium 自带输入法是因为哪行代码下载安装的呢?

@yuwuhen333 编码问题。中文字符加个 utextfields[0].send_keys(u"李大宝")

#17 楼 @xuxu 请问下 appium 自带输入法是因为哪行代码下载安装的呢?

@yuwuhen333
可能有點晚了,抱歉
沒看錯的話,應該是這行

capabilities.setCapability("unicodeKeyboard", "True");

看log的時候看到的
很抱歉,log來不及複製,回頭再看已經消失
有設定該行,sendKeys就可以使用,會直接貼上輸入值
但是沒有相對應的鍵盤畫面,之後如果追加一下鍵盤相關命令,會出狀況
我的情況是沒有做之後的命令,直接結束用例

---

額外
將 element 設定成 MobileElement 後,我並沒有找到 setValue
MobileCommand 裡頭是有,但是不會用,放棄
嘗試將 element 設定成 AndroidElement 後,看到 replaceValue 也可以用來傳遞輸入值
可是兩者都後面不知道是不是因為沒有鍵盤的關係,在想定的畫面出現前就結束用例

@wkx101 请问下如果我初始化时不加这 2 句还有其他办法可以实现吗,我按照 11 楼的做法手动在手机安装了 appium 输入法,但还是没法输入中文!也试过 send_keys("中文".encode('utf7')) 这样也是没输入中文的效果

@reters
這點我不清楚,上面的回復到現在,我並沒有去看過源碼。是否有其他方法實現中文輸入,要問其他大牛
我上頭的回覆只有我的用例執行後實際情況,而且我並沒有按照 11 樓的作法,我的 Appium 版本是 1.4.16,好像是會默認安裝到手機上。(印象中版上有個關於 Appium 對 Android 系統的默認安裝詢問,可以去看一下)
再來,我做測試的兩種系統 iOS 跟 Android,其中只有 Android 需要安裝輸入法。iOS 可以直接輸入中文。

非常棒!

刚好在找 python 版本的写法,谢谢

求救啊,设置了这两个
capabilities.setCapability("unicodeKeyboard", "True");
capabilities.setCapability("resetKeyboard", "True");

但是 sendKeys 中文,编辑框没反应,输入不了,,数字英文就可以输入

请教一下群主 有没有什么群 或者视频教程 能教教我怎么在 mac 上把 ios app 跑起来呢 跪求

使用这个输入法输入数字时,会出现随机对数字重复输入的情况。ps:输入前拿到的数字是正常的,输入法输入时就出错了

您好,我设置了这个输入法之后,每次使用 OPPO R9S 手机跑用例的时候,都会提示安装一遍 “Appium Android Input Manager Unicode”,请问如何才能禁止安装这个呢,因为手机上面其实已经是安装了的。

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