我正在使用Appium测试本地Android移动应用程序,测试是用Java编写的。
在以下代码中,我尝试在应用程序的菜单列表中搜索某个项目,然后单击。该菜单共有4个项目,但listSize
读取为35,读数因执行而异。此外,如果我点击例如menuList.get(0).click()
,在执行中它是第二个项目获得点击而不是第一个项目。
打印出下面列出的结果。
Appium版本1.4.13.1,JDK版本1.8.0_66。不确定任何其他信息是否相关,请询问您是否怀疑。
List<WebElement> menuList = driver.findElementsByClassName("android.widget.LinearLayout");
int listSize = menuList.size();
int index = 0;
Boolean menuFound = false;
while(!menuFound && index < listSize)
{
String label = menuList.get(index).findElement(By.id("no.ruter.reise.qa:id/label")).getText();
System.out.printf("%d of %d, %s\n", index, listSize, label);
if (label.equals(menuItem)){
menuList.get(index).click();
System.out.printf("\t%s %s\n", menuItem, "click");
menuFound = true;
}
index++;
}
打印结果:
Test: avgangMinpositionTilStavNaa
0 of 35, Avgangstider
1 of 35, Avgangstider
2 of 35, Avgangstider
3 of 35, Avgangstider
4 of 35, Avgangstider
5 of 35, Avgangstider
6 of 35, Avgangstider
7 of 35, Avgangstider
8 of 35, Avgangstider
9 of 35, Avgangstider
10 of 35, Avgangstider
11 of 35, Avgangstider
12 of 35, Avgangstider
13 of 35, Avgangstider
14 of 35, Avgangstider
15 of 35, Avgangstider
16 of 35, Avgangstider
17 of 35, Avgangstider
18 of 35, Avgangstider
19 of 35, Avgangstider
20 of 35, Avgangstider
21 of 35, Avgangstider
22 of 35, Avgangstider
23 of 35, Avgangstider
24 of 35, Avgangstider
25 of 35, Avgangstider
26 of 35, Avgangstider
27 of 35, Avgangstider
28 of 35, Avgangstider
29 of 35, Avgangstider
30 of 35, Avgangstider
31 of 35, Avgangstider
32 of 35, Favoritter
33 of 35, Kart
34 of 35, Finn reise
Finn reise click
Finn reise
答案 0 :(得分:0)
您正在使用常见的“android.widget.LinearLayout”类,您的应用程序有35个布局,类名为“android.widget.LinearLayout”。
这些布局可以采用嵌套格式。您需要为菜单创建定位器,如果您的所有菜单定位器都有id“no.ruter.reise.qa:id/label”,您可以使用下面的代码:
List<WebElement> menuList = driver.findElementsByClassName("no.ruter.reise.qa:id/label");
int listSize = menuList.size();
int index = 0;
Boolean menuFound = false;
for(WebElement menu : menuList)
{
String label = menu.getText();
System.out.printf("%d of, %s\n", index,label);
if (label.equals(menuItem)){
menu.click();
System.out.printf("\t%s %s\n", menuItem, "click");
menuFound = true;
}
index++;
}