clickOnButton не работает в Robotium - PullRequest
2 голосов
/ 09 мая 2011

У меня очень простой тест: нажмите кнопку, затем отобразите сообщение в TextView, показывающее, сколько раз была нажата кнопка.Тест выглядит примерно так:

@Smoke
public void testMessageIsUpdatedWhenButtonIsClicked() {
    _solo.clickOnButton(0);
    String displayedMessage = ((TextView) _solo.getView(R.id.messageTextView)).getText().toString();
    assertEquals("You clicked 1 times.", displayedMessage);
}

Теперь, когда я запускаю свой тест, утверждение не выполняется, потому что TextView по-прежнему отображает исходный текст с момента запуска Activity.Кажется, что OnClickListener, который я создал для Button, не вызывается.

Кто-нибудь еще видел эту проблему?

Что-нибудь, что парень может сделать, чтобы обойти проблему?

Ответы [ 6 ]

4 голосов
/ 17 ноября 2011

У меня была похожая проблема.В моем случае проблема была в клавиатуре!Поскольку клавиатура была открыта, robotium не видит кнопки «ОК» и «Отмена».Решение: спрятать клавиатуру и нажать кнопку.

solo.enterText(0, "Hello!");
        solo.goBack(); //hide the keyboard
        solo.clickOnButton("\u041E\u041A");
1 голос
/ 05 июня 2013

Я знаю, что это старый, но я хотел опубликовать, потому что это вызвало у меня много головной боли.

Том, вы упомянули в своих комментариях:

Я добавил следующее в свой AndroidManifest.xml в тестовом проекте: <uses-sdk android:targetSdkVersion="10" /> Затем я добавил это в AndroidManifest.xmlмое заявление: <supports-screens android:anyDensity="true"/> Все еще не повезло.Должен ли я подать отчет об ошибке?

Решение на самом деле состоит в том, чтобы добавить: <uses-sdk android:targetSdkVersion="10" /> в приложение, которое вы тестируете, а не в настоящее тестовое приложение.Это единственное изменение работает для меня.Теперь я могу использовать solo.clickButton("button text"); точно так же, как предполагалось, и мне не нужно использовать обходной путь.

Надеюсь, это поможет

0 голосов
/ 12 марта 2015

Когда вы нажимаете на кнопку, используя соло. Используйте клики на основе индекса вместо имен или поиска кнопки. Индекс начинается с 0.

solo.clickOnButton(1);

одиночные клики лучше всего работают с индексами

0 голосов
/ 25 ноября 2014

У меня была похожая проблема.К сожалению, я не смог заставить соло правильно нажать на кнопку.Однако использование adroid.test.TouchUtils решило мои проблемы:

Button button = solo.getButton( 0 );
TouchUtils.clickView( this, button );

Надеюсь, это поможет.

0 голосов
/ 14 февраля 2012

Я часто нахожу, что используя

solo.clickOnText("buttonName"); 

, а не на кнопке, кажется, лучший подход. Иногда кажется, что у Robotium проблемы с нажатием кнопок. Если вы предпочитаете использовать идентификатор кнопки, я предлагаю следующее:

solo.waitForIdleSync();
solo.clickOnButton(R.id.whatever);
0 голосов
/ 02 августа 2011

У меня была похожая проблема.Была кнопка с надписью «Игры», и я хотел нажать на нее в моем тестовом примере.После долгих экспериментов с «соло».Я обнаружил, что приведенный ниже код работает:

solo.waitForDialogToClose(10000);
solo.clickOnButton("Games");

Проблема, которую я считаю в моем случае, заключалась в том, что кнопка нажималась еще до того, как она была инициализирована и ей был присвоен onClickListener.

...