appium从弹出列表中选择不正确的项目

时间:2018-05-04 18:10:50

标签: java android automated-tests appium

我有两个问题与我无法解决的同一问题有关。我正在创建一个appium programm来测试本机Android应用程序。我正在使用Java。 在登录之前,应用程序中有一个选项可以更改环境。我在我的appium类中传递了环境名称作为参数,我正在使用Xpath来查找与提供的环境相对应的元素。 问题:每次更改为特定的(临时)时,我将哪个环境名称作为参数传递并不重要。 问题:

  1. 可能是什么原因造成的?

  2. 为什么当我使用带有text参数的xpath时,尽管uiautomatorviewer工具具有该text属性,但appium找不到该元素。

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

  3. 我提供了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 :(得分:2)

您试图点击LinearLayout而不是Textview。

使用:

selectEnv = androidDriver.findElement(By.xpath("//android.widget.TextView[contains(.,'QA')]"));
selectEnv.click();

答案 1 :(得分:1)

最终能够使用UiSelector找到元素

findElementByAndroidUIAutomator ("new UiSelector().textContains(\"QA\")");
相关问题