我正在使用有19页的应用程序。在每个页面上有10个帐户和10个复选框。
我在excel表中保留了一些帐户的列表,想要逐个读取excel中的帐号,将其与网页上的帐户匹配,如果值匹配 - >设置该帐户前面的复选框并移动excel中的下一个帐户.....这样重复,直到最后一个帐户在excel列表中匹配。
如果帐户与网页上的10个帐户中的任何一个帐户不匹配,我需要点击下一个箭头(显示在网页上的帐户列表下方)并检查帐号是否与新网页上的任何帐户匹配。
代码如下
String data=null; //to get value of account on webpage
int count=0;
do{
for(count=0;count<=9;count++)
{
data= (String) al1.get(count); //al1=List of accounts on webelement
if(stg.equals(data)) //stg=account read from execl
{
utl.checkbox_clicking(data);//calling method to set checkbox if value matches
break;
}
}
utl.Weblement_Click("*name of weblement of next page arrow*");
al1 = utl.Account_List(); //loading new account list on next page in List
}while(stg.equals(data));
逻辑上存在一些问题。有人可以建议我应该做出哪些改变?
答案 0 :(得分:1)
我看到你的问题是当你找到你需要的东西时,你只需要执行break。但是,只是走出内循环而不是外循环。
因此,无需尝试更改代码中的任何内容并重新组织某些内容,我想告诉您java中有一些未使用的内容,可能是因为代码的不可读性,称为标记块。也许它的唯一用途之一是打破外循环。我希望它能帮到你,它是解决你问题的正确方法。 请注意,大多数情况下,如果您发现自己使用它,可能需要更改循环。在你的情况下,我会选择while循环,有两个条件:一个用于每个页面中的10个帐户,另一个用于找不到更多页面。
这是一个简短的教程: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
所以在你的代码中我只添加了第一个语句和断行。
pagesLoop:
do {
for (count = 0; count <= 9; count++) {
data = (String) al1.get(count); //al1=List of accounts on webelement
if (stg.equals(data)) //stg=account read from execl
{
utl.checkbox_clicking(data);//calling method to set checkbox if value matches
break pagesLoop;
}
}
utl.Weblement_Click("*name of weblement of next page arrow*");
al1 = utl.Account_List(); //loading new account list on next page in List
} while (stg.equals(data));
答案 1 :(得分:0)
删除不必要的循环并错过计数应该是count<9
而不是count&lt; = 9
for(int count=0;count<9;count++) {
String data = (String) al1.get(count); //al1=List of accounts on webelement
if(stg.equals(data)) //stg=account read from execl
{
utl.checkbox_clicking(data);//calling method to set checkbox if value matches
break;
}
}
utl.Weblement_Click("*name of weblement of next page arrow*");
al1 = utl.Account_List(); //loading new account list on next page in List