我有两个问题与我无法解决的同一问题有关。我正在创建一个appium programm来测试本机Android应用程序。我正在使用Java。 在登录之前,应用程序中有一个选项可以更改环境。我在我的appium类中传递了环境名称作为参数,我正在使用Xpath来查找与提供的环境相对应的元素。 问题:每次更改为特定的(临时)时,我将哪个环境名称作为参数传递并不重要。 问题:
可能是什么原因造成的?
为什么当我使用带有text参数的xpath时,尽管uiautomatorviewer工具具有该text属性,但appium找不到该元素。
selectEnv = androidDriver.findElement(By.xpath(“// android.widget.LinearLayout [@ text ='QA']”));
我提供了2个截图。第一个是实际的应用程序屏幕,其中包含Android Studio Layout Inspector中的环境和属性列表。
第二个是列表中某个项目的uiautomatorviewer属性的屏幕截图。
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();
}
答案 0 :(得分:2)
您试图点击LinearLayout而不是Textview。
使用:
selectEnv = androidDriver.findElement(By.xpath("//android.widget.TextView[contains(.,'QA')]"));
selectEnv.click();
答案 1 :(得分:1)
最终能够使用UiSelector找到元素
findElementByAndroidUIAutomator ("new UiSelector().textContains(\"QA\")");