У меня есть проблема, щелкнув или нажав элемент с помощью фреймворка Appium-Eclipse-TestNG в эмуляторе Android - PullRequest
0 голосов
/ 14 ноября 2018

Впервые в Appium любая помощь приветствуется

Мой код:

public void testmethod() {
    List<MobileElement> buttonlist = driver.findElements(By.xpath("//android.app.Dialog//android.view.View//android.widget.Button"));
    buttonlist.forEach(webElement -> log.info(webElement.getAttribute("name")));
    for (MobileElement button : buttonlist) {
        System.out.println(".................button name=>" + button.getAttribute("name") + "<");
        if ("Send Email ".equals(button.getAttribute("name"))) {
            driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
            button.click();
            break;
        }
    }

}

C # для цикла печатает все элементы в списке, тогда как при использовании Java он печатает толькоодин.Я делаю что-то неправильно?Я вижу, что он быстро щелкает в верхней части экрана Android и закрывается, не нажимая на фактический элемент.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Есть несколько проблем, которые я вижу в вашем коде.

Во-первых, вам не нужно вызывать неявное ожидание в цикле for.Используйте его один раз сразу после инициализации драйвера со временем, превышающим 1 мин. Или более.

Во-вторых, вы добавили дополнительный пробел в ваше условие if, оно должно быть как,

if ("Send Email".contains (button.getAttribute("name"))) {
  button.click();
  break;
}

В-третьих, это скорее предложение.Вместо click используйте метод AndroidTouchAction classes tap, например,

AndroidTouchAction touch = new AndroidTouchAction (driver);
touch.tap (TapOptions.tapOptions ()
  .withElement (ElementOption.element (e)))
  .perform ();
0 голосов
/ 14 ноября 2018

Вы должны использовать уникальный идентификатор элемента для доступа к кнопке.Вы можете получить доступ к элементу, используя идентификатор , идентификатор ресурса , идентификатор доступа и xpath .

xpath не рекомендуется

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

Вы можете использовать Appium Desktop Inspector для проверки элемента.Зная точный элемент, вы можете нажать на кнопку следующим образом:

MobileElement button= driver.findElementByAccessibilityId("your element's accessibility id");
button.click();
//or
MobileElement button= driver.findElementById("your element's id or resource id");
button.click();

Вы можете получить или id, идентификатор ресурса или идентификатор доступности из инспектора рабочего стола appium

Если вы хотите использовать xpath для своей кнопки, получите его из инспектора рабочего стола appium и используйте его как:

MobileElement button= driver.findElement(By.xpath("your element's xpath shown in appium"));
button.click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...