appium切换系统键盘
转载:https://www.cnblogs.com/dianxiao2/p/5520794.html
最近打算详细看一下appium的API。今天闲来无事,迈开了这条道路的第一步,打开文档后,映入眼帘的第一个API是关于激活输入法的,那么就从这里开始吧。希望我这些文章能帮到跟我一样的小白们,当需要使用appium的时候不至于一脸懵逼的不知所措。
好嘞~上菜!!!
1. available_ime_engines
Get the available input methods for an Android device. Package and activity are returned (e.g., ['com.android.inputmethod.latin/.LatinIME']) Android only.
好吧,上面是我直接从API里拷出来的,我英文也不好只能借助百度翻译,这个API的大概意思是:这是一个安卓的方法,获取当前设备可用的输入法。
那么我们先来看一下,我手机里有几种输入法;
通过手机的输入法设置看到了,目前手机上可用的输入有3种,‘谷歌’、‘百度’、‘appium自带’。实验一下
a = driver.available_ime_engines print(a) 通过运行之后发现,appium给我返回了一个列表:
好吧,可能看不太懂,但是挑关键词分析一下,确实对应的是三个输入法‘com.baidu’、‘com.google’、‘io.aapium’
2.activate_ime_engine(self, engine)
Activates the given IME engine on the device. Android only. :Args: - engine - the package and activity of the IME engine to activate (e.g., 'com.android.inputmethod.latin/.LatinIME')
也是从API直接拷贝过来的,这次还算贴心的给了一个例子,这个API的大概意思是:这是一个安卓的方法,激活输入法。
那我们就把刚刚获得的三个输入法,分别实验一下,首先是百度
driver.activate_ime_engine('io.appium.android.ime/.UnicodeIME')
driver.find_element_by_id("输入框").click()
driver.find_element_by_id("输入框").set_text('tt')
从红圈处可以明显的看出来,启动的就是百度的输入法没有错。
接下来是谷歌
driver.activate_ime_engine('com.google.android.inputmethod.pinyin/.PinyinIME')
driver.find_element_by_id("输入框").click()
driver.find_element_by_id("输入框").set_text('tt')
从红圈处标志性的网格球可以看出,启动的就是谷歌的输入法。
最后是appium的输入法
driver.activate_ime_engine('io.appium.android.ime/.UnicodeIME')
driver.find_element_by_id("输入框").click()
driver.find_element_by_id("输入框").set_text('123')
不用懵逼,appium的输入法就是没有界面。
其实大可不必这么麻烦,在执行过 driver.activate_ime_engine() 之后,“手机设置->输入法设置->当前输入法”,就已显示所设置的输入法了,可以自己试试看。
3.active_ime_engine
Returns the activity and package of the currently active IME engine (e.g.,'com.android.inputmethod.latin/.LatinIME').
Android only.
这个API的大概意思是:这是一个安卓方法,获取当前输入法的包名和Activity
使用一下看看结果:
输入代码
driver.activate_ime_engine('io.appium.android.ime/.UnicodeIME') a = driver.active_ime_engine print('当前输入法是:'+a) 输出结果:
输入代码
driver.activate_ime_engine('com.google.android.inputmethod.pinyin/.PinyinIME') a = driver.active_ime_engine print('当前输入法是:'+a) 输出结果:
输入代码
driver.activate_ime_engine('com.baidu.input_miv6/.ImeService') a = driver.active_ime_engine print('当前输入法是:'+a) 输出结果:
Deactivates the currently active IME engine on the device. Android only.
这个API的大概意思是:这是一个安卓方法,关闭当前的输入法
我一脸懵逼的发现,当我使用这个方法,关闭了某个输入法后,在“手机设置->输入法设置->当前输入法”中,也看不到这个被关闭的输入法了。
原本的输入法是这样的三个
执行代码
a = driver.active_ime_engine
print('当前输入法是:'+a) driver.deactivate_ime_engine() 输出结果:
百度输入法,没了~~~~~~~~ 依次尝试之后发现,是可以将所有输入法依次‘变’没的。但也不用担心,通过 available_ime_engines 和 activate_ime_engine,仍然可以设置输入法,被激活的输入法在设置中也会变得重新可见。
5.is_ime_active(self) Checks whether the device has IME service active. Returns True/False. Android only. 这个API的大概意思是:这是一个安卓方法,检查是否有输入法被启用,返回True/False.
执行代码
a = driver.is_ime_active()
print(a) 输出结果:True 尝试了几下,暂时不知道怎么才能输出False。感觉这个API也没啥大用,就不去纠结了。
6.hide_keyboard(self, key_name=None, key=None, strategy=None) Hides the software keyboard on the device. In iOS, use `key_name` to press a particular key, or `strategy`. In Android, no parameters are used. 这个API的大概意思是:隐藏键盘(吧啦吧啦的说了一下iOS和安卓的用法不一样,在下不用iOS就不罗嗦了)
执行代码
driver.activate_ime_engine('com.baidu.input_miv6/.ImeService')
driver.find_element_by_id("输入框").click() sleep(5) driver.hide_keyboard()
输出结果:
可以看到指定的百度输入法,再点击输入框后调起显示,然后被隐藏
四不四执行完hide_keyboard()之后,在需要输入的操作时‘百度输入法’就会变得跟‘appium输入法’一样不弹出界面,专心的闷头干活了呢?
执行代码
driver.activate_ime_engine('com.baidu.input_miv6/.ImeService')
driver.find_element_by_id("输入框").click() sleep(5) driver.hide_keyboard()
driver.find_element_by_id("输入框").click()
输出结果:
然而并没有闷头干活~~还是显示出来了。
看来这个API不是让输入法闷头干活,而是在输入完内容后收起键盘,让‘输入法’遮挡的按钮可以被点击。
posted on 2017-11-17 09:23 fenger2007 阅读(1739) 评论(0) 编辑 收藏 举报