NO.1 appium-关于输入法

最近打算详细看一下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)
输出结果


 

4.deactivate_ime_engine(self)

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不是让输入法闷头干活,而是在输入完内容后收起键盘,让‘输入法’遮挡的按钮可以被点击。


菜齐了!

原文地址:https://www.cnblogs.com/dianxiao2/p/5520794.html