
👆對私有云感興趣能夠進入公衆號回覆「私有云」哦。python
編寫測試腳本的過程當中,咱們會常常遇到須要輸入文本的狀況。不管是Airtest
仍是poco
,都給咱們提供了對應的接口來實現文本輸入的功能。固然,不少同窗也跟咱們反饋了一些在文本輸入過程當中遇到的問題,因此下文,咱們將圍繞如下幾點來向你們講述如何進行文本輸入以及如何解決文本輸入的常見問題:android
Airtest
中的text()
接口介紹web1個使用
text()
接口的例子shell使用
text()
接口的常見問題apipoco
中的set_text
接口介紹微信
text()
接口是Airtest
中的文字輸入接口,它能實如今目標設備上輸入文本的功能,可是文本框須要處於激活狀態。text()
接口支持的平臺有:Android
、IOS
和Windows
。它包含如下參數:app
text
– 要輸入的文本,例如:編輯器
text("hello")
enter
–是否在輸入完畢後,執行一次Enter
(回車鍵),至關於keyevent("ENTER")
,默認是True
;若是僅是想輸入文字,而不執行Enter
(回車鍵),則能夠傳入False
進去:ide
text("hello",enter=False)
值得注意的是,不一樣平臺下的text()
接口,會存在一些差別:測試
Android平臺下
Android平臺下的text()
接口,除了上述倆個參數之外,還有另外一個參數search
:
search
– 是否要按下輸入法鍵盤中的search
鍵,默認爲False
;部分輸入框,須要在輸入內容後,點擊輸入鍵盤中的search
鍵纔可以激活搜索操做,咱們傳入True
便可:
text("hello",search=True)
IOS平臺下
IOS平臺下的text()
接口,傳入要輸入的文本text
時,會默認給text
加上一個換行符\n
。
咱們在使用text
接口時,通常是這樣的流程:
點一下你須要輸入的位置,激活輸入光標;
調用
text()
接口來輸入內容
如圖,在這個腳本里先點擊了須要輸入的位置,而後調用了text()
接口進行輸入,在運行時手機將會自動被安裝一個名爲yosemite.apk
的應用,而後啓用 yosemite
輸入法來進行輸入。
並且須要注意的是,在使用過text()
接口後,手機輸入法會被切換爲yosemite輸入法,所以看不到正常鍵盤了(無需驚慌)。若是須要手工輸入,能夠在系統的輸入法設置中,把輸入法切換回系統輸入法便可恢復。同時咱們也提供了 安卓手機助手功能 ,在手機助手中能夠簡單地點擊鼠標來切換輸入法。(可在公衆號菜單中找到咱們的官網教程查看安卓手機助手功能)
真機輸入失敗的處理
若是text()
接口輸入失敗,請查看是否手機阻止了yosemite.apk
的安裝及運行,該apk安裝成功之後,手機上會出現以下的圖標:
部分手機的兼容性問題也會致使text()
接口輸入失敗,具體能夠查閱官網教程中「Android鏈接FAQ」小結的內容。 另外咱們也能夠嘗試將 yosemite
輸入法 設置爲手機默認輸入法,而後再進行 text()
接口的調用,能夠避免部分輸入失敗的問題。
有部分特殊型號的手機,可能在使用Yosemite
輸入法時容易失敗,沒法輸入文字(OPPO與Vivo品牌更容易出現),假如沒有輸入中文的需求,能夠嘗試使用adb shell input
指令來進行文字輸入:
shell("input text 'hello world'")
同時,上面這種adb shell input
能夠直接設置爲默認的輸入方式,替換原先的yosemite輸入,例如這樣在python代碼中這樣初始化手機:
from airtest.core.api import *
# 至關於命令行中使用 --device Android:///?ime_method=ADBIME 鏈接手機
init_device("Android", ime_method="ADBIME")
text("hello")
Yosemite
輸入法的常見問題
有不少同窗會問到關於Yosemite
輸入法的問題,在這裏咱們統一解釋下:
1.Yosemite
輸入法是沒有按鍵頁面的,只經過ide輸入文本,該輸入法成功安裝之後,設備頁面下方的顯示如圖,是正確的:
2.當Airtest
斷開設備的鏈接以後,設備當前的輸入法仍是Yosemite
,咱們能夠找到手機設置-更多設置-語言與輸入法
(不一樣型號手機修改輸入法的位置可能有一些差異),而後將當前輸入法改爲你平時使用的輸入法便可。
模擬器輸入失敗的處理
部分模擬器(例如夜神模擬器)在輸入時沒法成功,可能由於默認使用鍵盤輸入,所以沒法調用yosemite
輸入法,致使 text()
接口沒法輸入文字。首先咱們能夠嘗試確認設置中是否打開了硬件-物理鍵盤
,嘗試關閉這個選項,並設置默認輸入法爲yosemite
輸入法後再次重試便可。
若是依然失敗(物理鍵盤選項被不斷自動重置),能夠打開右上角的模擬器設置,勾選軟鍵盤選項後重試:
若是依然沒法輸入,能夠考慮換用poco
來輸入,或是直接使用上述的adb
指令輸入英文內容。
沒法在密碼框中輸入密碼
部分廠商(例如華爲、VIVO等)的某些型號手機限制了密碼框的輸入,強制在輸入密碼時必須使用系統鍵盤輸入。這樣會致使須要輸入密碼時,直接使用airtest
的text()
會沒法輸入內容,須要把如下選項打開後才能正常輸入密碼內容:
poco
中提供了一個set_text
接口來實現文本輸入的功能。這個接口無需調用輸入法,能夠直接設置文字。可是指定的控件必須是一個可輸入的控件,例如在Android中,是一個 EditText
類型的widget
:
poco("com.android.mms:id/recipients_editor").set_text("hello")
另外,set_text
接口只會輸入文本,而並不會像text()
接口同樣,默認還會執行一次回車鍵enter
。
咱們建議各位若是項目已經接入了poco
,能夠多嘗試使用poco
的set_text
來設置文字內容,若是沒法輸入(部分機型、部分輸入框有可能不支持set_text
接口),再嘗試用Airtest
的text
()
接口。


本文分享自微信公衆號 - AirtestProject(AirtestProject)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。