我試圖測試我的應用程序google signup/login feature
,particularly
用戶嘗試添加未在對話框中列出的新帳戶的情況。使用UiAutomator鍵入文本Android
使用的設置對應於默認的谷歌「添加帳戶」設置。
我遇到的問題是,我似乎無法當應用程序需要它鍵入電子郵件,然後按「下一步」按鈕
這裏是我的代碼
// Find add account button using uiautomator
UiObject addButton = mDevice.findObject(new UiSelector().resourceId("android:id/button2"));
assertEquals(true, addButton.exists());
// Click the button
// Fill email text box
UiObject emailBox = mDevice.findObject(new UiSelector().resourceId("identifierId"));
emailBox.waitForExists(TIMEOUT);
assertEquals(true, emailBox.exists());
emailBox.legacySetText(googleEmail);
// Find 'NEXT' Button
UiObject nextButton = mDevice.findObject(new UiSelector().resourceId("identifierNext"));
assertEquals(true, nextButton.exists());
nextButton.click();
// Fill password
UiObject passwordBox = mDevice.findObject(new UiSelector().resourceId("password"));
passwordBox.waitForExists(TIMEOUT);
assertEquals(true, passwordBox.exists());
emailBox.clearTextField();
emailBox.setText(googlePassword);
// Find 'NEXT' Button
nextButton = mDevice.findObject(new UiSelector().resourceId("next"));
assertEquals(true, nextButton.exists());
nextButton.click();
// Find 'ACCEPT' Button
nextButton = mDevice.findObject(new UiSelector().resourceId("next"));
nextButton.waitForExists(TIMEOUT);
assertEquals(true, nextButton.exists());
nextButton.click();
應用程序進入電子郵件應輸入的屏幕,它不會在"assertEquals(true, emailBox.exists());"
上失敗,所以我相信該應用程序正在檢測到它。
我也試過使用"setText"
而不是"legacySetText"
並且字符串被注入,但是然後「下一個」按鈕沒有被啓用。
此外,有時彈出鍵盤和文本鍵入,但這似乎是隨機的,我不能隨意複製它。
我在這裏做錯了什麼?
編輯:
我評論的代碼的其餘部分,改變了按鈕的斷言和預期的「下一步」按鈕不會被啓用,因爲沒有文本被鍵入。
// Find add account button using uiautomator
UiObject addButton = mDevice.findObject(new UiSelector().resourceId("android:id/button2"));
assertEquals(true, addButton.exists());
// Click the button
addButton.click();
// Fill email text box
UiObject emailBox = mDevice.findObject(new UiSelector().resourceId("identifierId").descriptionContains("Enter your email "));
emailBox.waitForExists(TIMEOUT);
assertEquals(true, emailBox.exists());
emailBox.legacySetText(googleEmail);
// Find 'NEXT' Button
UiObject nextButton = mDevice.findObject(new UiSelector().resourceId("identifierNext"));
assertEquals(true, nextButton.isEnabled());
nextButton.click();
錯誤說,它預計真實的,但結果卻是假的「的assertEquals(真,nextButton.isEnabled());」行
編輯2: 我發現問題是谷歌的登錄頁面解釋文本的方式。
隨着uiautomatorviewer我抓住了視圖的屏幕截圖,並檢查了我手動編寫了一些文本的EditText字段。我發現我寫的文本沒有填充text屬性,而是轉到content-description屬性。
我現在的問題是我只找到一種方法來編輯框架中的setText方法的文本。我嘗試點擊視圖,然後設置文本,但沒有成功。有沒有辦法改變uiautomator的內容描述?
你是否可以用'adb shell input text your_text'鍵入你的文本? – Rilwan