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) 輸出結果:

 
        

 

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不是讓輸入法悶頭干活,而是在輸入完內容后收起鍵盤,讓‘輸入法’遮擋的按鈕可以被點擊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM