用UiAutomator測試工具模擬輸入操作的幾種方式

weixin_34321977發表於2017-01-13

1、呼叫UiObject的setText()的方法

new UiObject(new UiSelector().resourceId("com.example.testdemo:id/edit")).setText("abcde");

2、呼叫裝置的按鍵點選方法

// 將游標置於輸入框內
new UiObject(new UiSelector().resourceId("com.example.testdemo:id/edit")).setText("");
// 呼叫裝置的按鈕點選事件 
UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_0);

3、從軟體盤上輸入一個字串

public void inputStrintForKeycode(String input) throws UiObjectNotFoundException{
        Configurator conf=Configurator.getInstance();
        conf.setActionAcknowledgmentTimeout(60);
        for(int i=0;i<input.length();i++){
            char c =input.charAt(i);
            System.out.println();
            if(c >=48&&c <=57){
                UiDevice.getInstance().pressKeyCode(c-41);
            }else if(c >=97&&c <=122){
                UiDevice.getInstance().pressKeyCode(c-68);
            }else if(c >=65&&c <=90){
                UiDevice.getInstance().pressKeyCode(59);
                sleep(20);
                UiDevice.getInstance().pressKeyCode(c-36);
            }else if(c ==32){
                UiDevice.getInstance().pressKeyCode(62);
            }else{}}
        //別忘記恢復預設延時,以免影響下面的指令碼執行
        conf.setActionAcknowledgmentTimeout(3000);
    } 
  • 輸入法的軟鍵盤的每一個鍵都對應一個KeyCode,測試的時候有些需求是必須呼叫鍵盤上按鈕的點選事件(像某些手機銀行的軟體輸入密碼的時候其實它是重新繪製了一個軟鍵盤,這個時候它就設定了必須從這個軟鍵盤上輸入,遮蔽了edittext.setText()方法)

相關文章