appium выбирает неправильный элемент из всплывающего списка - PullRequest
0 голосов
/ 04 мая 2018

У меня есть два вопроса, относящихся к одной и той же проблеме, которые я не могу решить. Я создаю программу appium для тестирования нативного приложения для Android. Я использую Java. Перед входом в приложение есть возможность изменить среду. Я передаю в своем классе appium имя среды как параметр, и я использую Xpath, чтобы найти элемент, соответствующий предоставленной среде. Проблема: не имеет значения, какое имя среды я передаю в качестве параметра, каждый раз, когда оно меняется на конкретное (промежуточное). Вопросы:

  1. Что может быть причиной этого?

  2. Почему, когда я использую xpath с параметром text, appium не может найти элемент, несмотря на то, что инструмент uiautomatorviewer имеет это свойство text.

    selectEnv = androidDriver.findElement (By.xpath ("// android.widget.LinearLayout [@ text = 'QA']"));

Я предоставил 2 скриншота. Первый - это экран приложения со списком сред и свойств из Android Studio Layout Inspector. enter image description here

Второй - скриншот свойств uiautomatorviewer для одного из элементов списка. enter image description here

new WebDriverWait(androidDriver, 30).until(ExpectedConditions.presenceOfElementLocated(id("md_contentRecyclerView")));
        envContainer = androidDriver.findElement(By.id("md_contentRecyclerView"));
        Assert.assertTrue(envContainer.isDisplayed());
        if (env.equals("dev")) {
            selectEnv = androidDriver.findElement(By.xpath("//android.widget.LinearLayout[@index='0']"));
            selectEnv.click();
        }
        if (env.equals("QA")) {
            selectEnv = androidDriver.findElement(By.xpath("//android.widget.LinearLayout[@index = '1']"));
            selectEnv.click();
        }
        if (env.equals("Staging")) {
            selectEnv = androidDriver.findElement(By.xpath("//android.widget.LinearLayout[@index='2']"));
            selectEnv.click();
        }
        if (env.equals("Prod")) {
            selectEnv = androidDriver.findElement(By.xpath("//android.widget.LinearLayout[@index='3']"));
            selectEnv.click();
        }

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

В итоге удалось найти элемент с помощью UiSelector

findElementByAndroidUIAutomator ("new UiSelector().textContains(\"QA\")");
0 голосов
/ 04 мая 2018

Вы пытаетесь щелкнуть LinearLayout вместо его Textview.

Использование:

selectEnv = androidDriver.findElement(By.xpath("//android.widget.TextView[contains(.,'QA')]"));
selectEnv.click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...