Я пытаюсь проверить свое приложение google signup/login feature
, particularly
случай, когда пользователь пытается добавить новую учетную запись, которая не указана в диалоговом окне.Ввод текста с помощью UiAutomator Android
Используемая настройка соответствует настройке «добавить учетную запись» по умолчанию.
Проблема у меня в том, что я не могу показаться, чтобы ввести электронную почту, когда приложение запрашивает его, а затем нажмите кнопку «Next»
Вот мой код
// 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"
, и строка вводится, но затем кнопка «next» не включена.
Кроме того, иногда клавиатура всплывает и текст набирается, но это кажется случайным, и я не могу воспроизвести его по своему усмотрению.
Что я здесь делаю неправильно?
EDIT:
Я прокомментировал остальной код и изменил кнопку утверждения и, как ожидается, кнопка «рядом» не получает включен, потому что текст не был напечатан.
// 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());» line
EDIT 2: Я нашел, что проблема заключается в том, как текст интерпретируется на странице входа в Google.
С uiautomatorviewer я взял снимок экрана и просмотрел поле EditText, в котором я написал текст вручную. Я обнаружил, что текст, который я написал, не заполнил текстовый атрибут, но вместо этого он перешел к атрибуту описания содержимого.
Моя проблема в том, что я нашел способ редактировать текст с помощью метода setText из фреймворка. Я попытался щелкнуть мышью по просмотру, а затем установить текст, но без успеха. Есть ли способ изменить описание содержимого с помощью uiautomator?
Вы можете набрать текст текстом 'adb shell input text your_text'? – Rilwan