今天碰到一個輸入密碼框的事情,這個密碼框由6個TextView組成。因為它們都有獨立的,所以首先想到的就是單獨輸入每個TextView。
String password = "123456";
首先,想到直接用一個for循環搞定:
char[] passwordChars = password.toCharArray();
for(int i=0;i<6;i++){
passwordTextView.get(i).sendKeys(String.valueOf(passwordChars[i]));//輸入密碼
}
但是,發現執行的時候,總是往第一個TextView里面重復輸入。失敗!
分析是不是因為其他TextView沒有獲取到焦點導致的?
然后,把各個TextView通過ID定位,然后輸入以前先點擊該TextView,參考代碼:
passwordInput1.click();
passwordInput1.sendKeys(String.valueOf(passwordChars[0]));//輸入密碼第一位
passwordInput2.click();
passwordInput2.sendKeys(String.valueOf(passwordChars[1]));//輸入密碼第二位
passwordInput3.click();
passwordInput3.sendKeys(String.valueOf(passwordChars[2]));//輸入密碼第三位
passwordInput4.click();
passwordInput4.sendKeys(String.valueOf(passwordChars[3]));//輸入密碼第四位
passwordInput5.click();
passwordInput5.sendKeys(String.valueOf(passwordChars[4]));//輸入密碼第五位
passwordInput6.click();
passwordInput6.sendKeys(String.valueOf(passwordChars[5]));//輸入密碼第六位
然而,執行結果仍然是重復輸入到第一個TextView。再次失敗!
既然,各個輸入不可以了,那就把它們當作一個普通TextView一起輸入呢?就這么干!
passwordTextViewContainer.sendKeys(password);
這次竟然成功啦!