Как протестировать OnClick в Appium Android Test

Я новичок в Appium. Пытаюсь проверить функцию кнопки OnClick. Действие включает кнопку и TextView. Когда я нажимаю кнопку, текст TextView меняется (только 1 раз - не переключаться). Однако функция OnClick не работает. Это мой тест:

@Test
public void click_button() {
  AndroidElement text = (AndroidElement)((AndroidDriver)driver).findElementById(package_ + "text");
  AndroidElement button = (AndroidElement)((AndroidDriver)driver).findElementById(package_ + "button");
  String prevTest = text.getText();
  wait.until(ExpectedConditions.visibilityOf(button));

  //attemp 1
  button.click();
  driver.findElement(MobileBy.className("android.widget.Button")).click();

  //attempt 2
  Actions actions = new Actions(driver);
  actions.click(button);
  actions.perform();

  //attempt 3
  AndroidTouchAction touch = new AndroidTouchAction ((PerformsTouchActions) driver);
  touch.tap (TapOptions.tapOptions ()
          .withElement (ElementOption.element (button)))
          .perform ();
  String postTest = text.getText();
  assertNotEquals(prevTest, postTest);
}

Это моя функция OnClick:

public void buttonClick(View view) {
    textView.setText("Clicked");
}

Кроме того, это функция setUp:

@Before
public void setUp() throws Exception {
    File classpathRoot = new File(System.getProperty("user.dir"));
    File app = new File(classpathRoot, "build/outputs/apk/debug/app-debug.apk");
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Galaxy A7");
    capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
    capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.0");
    capabilities.setCapability(MobileCapabilityType.APP, app);
    capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");
    driver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);
    wait = new WebDriverWait(driver, 10);
    package_ = "com.example.trafalgarandre.testtesting:id/";
}

Это логи сервера для подхода 1часть 1часть 2часть 3часть 4часть 5часть 6часть 7

Тестовый пример не выполняется, так как содержимое TextView не меняется. скриншот результата Как я могу это исправить? Заранее спасибо.

Вы инициализировали DesiredCapabilities? Ваш сервер Appium работает? Какую ошибку вы получаете? Также добавьте журнал ошибок

Suban Dhyako 17.12.2018 09:59

Работает нормально. Просто тест не проходит из-за того, что текст TextView не меняется

Nguyen Do 17.12.2018 10:06

Можете ли вы поделиться errors, который вы видите в журналах сервера при выполнении разных кодов попыток?

Amit Jain 17.12.2018 10:08

Пожалуйста, добавьте также журнал сервера Appium.

Suban Dhyako 17.12.2018 10:21

@AmitJain Я не вижу тега Error в журналах сервера, но я просто поделюсь им. Однако могу я спросить, как я могу поделиться здесь errors?

Nguyen Do 17.12.2018 10:30

Я думаю, вам нужно определить свой драйвер как статический. Попробуйте определить свой драйвер как статический.

Suban Dhyako 17.12.2018 10:37

@SubanDhyako Я пытался определить как статический, но все равно не удалось

Nguyen Do 18.12.2018 03:18
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
305
1

Ответы 1

text, на который вы ссылаетесь для получения текста postTest, всегда будет возвращать тот же текст, что и раньше, поскольку вы не нашли текстовое представление снова после обновления текста.

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

Попробуйте это и проверьте. Он должен работать.

Другие вопросы по теме