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

xuxu · January 20, 2015 · Last by 33521_ replied at May 24, 2017 · 4690 hits
本帖已被设为精华帖!

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 · January 21, 2015 作者

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

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

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

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

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

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 · May 24, 2015 作者

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

xuxu #17 · May 24, 2015 作者 2 个赞

@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”,请问如何才能禁止安装这个呢,因为手机上面其实已经是安装了的。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up