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

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

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

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

python:

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

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

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

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

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

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

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

非常棒!

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

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

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

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

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

---

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

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

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

#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 自带输入法是因为哪行代码下载安装的呢?

xuxu #15 · 2015年05月24日 Author

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

@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 直接修改的,请指教

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

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

匿名 #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.
自定义是否还原输入法。

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

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

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

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

xuxu #5 · 2015年01月21日 Author

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

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

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

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

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

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