Robotium и системные диалоги
Когда я пытаюсь выполнить сопряжение с устройством Bluetooth, появляется диалоговое окно подтверждения системы с PIN-кодом. Есть кнопки "Отмена" и "ОК". Но я не могу щелкнуть их с Robotium. Как я могу работать с диалогами ОС Android в Robotium? Благодарю.
5 ответов
Это работает для меня:
solo.clickOnView(solo.getView(android.R.id.button1));
где кнопка "Положительный" - это android.R.id.button1, кнопка "Негативный" - android.R.id.button2, а "Нейтральный" - android.R.id.button3.
Невозможно написать контрольный пример, охватывающий более 2 приложений. Но, если это часть того же приложения, то вы можете использовать solo.clickOnText("Cancel")
, Таким же образом вы можете нажимать на другие кнопки, нажимая на их тексты.
Robotium может быть сложным, когда дело доходит до кнопок диалогового окна системы Android, однако есть решение.
Нашел ответ на этот пост в стеке
// Set this dependency in your app's gradle file
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
и используйте этот фрагмент кода в вашем тестовом проекте:
// Initialize UiDevice instance
UiDevice uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
// Search for correct button in the dialog.
UiObject button = uiDevice.findObject(new UiSelector().text("ButtonTest"));
if (button.waitForExists(5000)) {
button.click();
}
Как сказал @kamal_prd, вы не можете, потому что диалог не является частью одного и того же приложения. Может быть, вы могли бы использовать
clickOnScreen(float x, float y) // Щелчок по указанным координатам
Я знаю, что сложно управлять с другим разрешением экрана / размером, но это то, что я также использую для тестирования своего приложения.
Ты можешь использовать solo.clickOnView(solo.getView(buttonId))