Java 保持内部for循环,直到列表数组结束

Java 保持内部for循环,直到列表数组结束,java,selenium-webdriver,Java,Selenium Webdriver,当我使用continue返回到第二个for循环的开始处转到下一个迭代时,它不起作用。我用过休息和一些东西。我不知道还能做什么。我的鳕鱼在下面。基本上在测试结束后,或者如果条件为false,我想返回到第二个for循环迭代 for (String client: Arrayclients) { // do some stuff //** Begin *2nd inner for-loop**** for (int i = 0; i < links; i++) {

当我使用continue返回到第二个for循环的开始处转到下一个迭代时,它不起作用。我用过休息和一些东西。我不知道还能做什么。我的鳕鱼在下面。基本上在测试结束后,或者如果条件为false,我想返回到第二个for循环迭代

 for (String client: Arrayclients) {

   // do some stuff

   //** Begin *2nd inner for-loop****

   for (int i = 0; i < links; i++) {

    PS_OBJ_CycleData.ScrollToTop(driver); // scroll up
    List < WebElement > CCTable = driver.findElements(By.cssSelector(selector));
    WebElement code = CCTable.get(i);
    // changing code to mcode to look for first 3 characters    
    String mcode = code.getText().substring(0, 3).trim();
    System.out.println("\n" + "modified " + mcode);
    // System.out.println("\n"+code.getText().substring(0, 3).trim()+"\n");

    //----------------------checking for bad code -----------------------------------------
    String[] badcodes = {
     "5H9",
     "5GJ",
     "5AX",
     "5A4",
     "5HD"
    };
    boolean check = Arrays.asList(badcodes).contains(mcode);
    System.out.println(check + "code in array list");
    //check == true will work as well
    if (check) {
     System.out.println(check + "-Bad Code found breaking loop");
     continue;
    } else {
     //checking to make sure element is clickable
     PS_OBJ_CycleData.isClickable(code, driver);
     System.out.println("Clickable?" + code.isEnabled());
     code.click();
    }



    for (WebElement cc: MulCCodeProcess) {

    }
    Thread.sleep(2000);
    PS_OBJ_CycleData.PreviewPayroll(driver).click();
    PS_OBJ_CycleData.VerifyCalcPreviewPayrollBox(driver);

    for (int x = 0; x < 9; i++) {
     String PreviewStatus = "//table[@id='cppProcessInfoTable_rows_table']//tr[@id='cppProcessInfoTable_row_0']/td[starts-with(@id,'cppProcessInfoTable_row_0_cell_2')]";

     List < WebElement > Status = driver.findElements(By.xpath(PreviewStatus));
     WebElement status = Status.get(x);
     String pstatus = status.getText().trim();
     System.out.println("\n" + "status " + pstatus);

     String Status1 = "Complete";
     String Status2 = "Sucessfull";
     String Status3 = "Payroll Delayed";
     String Status4 = "Error";

     WebElement CalcPreviewPayroll = driver.findElement(By.xpath("//*[contains(@id,'cppBatch_title')]"));

     if (CalcPreviewPayroll.isDisplayed() && pstatus.equals(Status1) || pstatus.equals(Status2)) {
      PS_OBJ_CycleData.Close(driver).click();
      break;
     }

     if (!CalcPreviewPayroll.isDisplayed()) {
      break;
     }

     if (CalcPreviewPayroll.isDisplayed() && pstatus.equals(Status3) || pstatus.equals(Status4)) {
      PS_OBJ_CycleData.Close(driver).click();
      PS_OBJ_CycleData.VerifyCycleStatusID(driver);
      System.out.println("breaking loop cause " + pstatus);
      continue;
     }

    }

    // do some stuff

   } //** END 2nd inner for-loop****

  } //**END outter for-loop****
for(字符串客户端:Arrayclients){
//做点什么
//**开始*第二个内循环****
对于(int i=0;iCCTable=driver.findElements(By.cssSelector(selector));
WebElement code=CCTable.get(i);
//将代码更改为mcode以查找前3个字符
字符串mcode=code.getText().substring(0,3.trim();
System.out.println(“\n”+“修改”+mcode);
//System.out.println(“\n”+code.getText().substring(0,3.trim()+”\n”);
//----------------------检查错误代码-----------------------------------------
字符串[]badcodes={
“5H9”,
“5GJ”,
“5AX”,
“5A4”,
“5HD”
};
布尔检查=数组.asList(badcodes).contains(mcode);
System.out.println(勾选+“数组列表中的代码”);
//check==true也适用
如果(检查){
System.out.println(检查+“-发现坏代码中断循环”);
持续
}否则{
//检查以确保元素可单击
PS_OBJ_CycleData.isClickable(代码、驱动程序);
System.out.println(“可点击?”+code.isEnabled());
code.click();
}
for(WebElement cc:MulCCodeProcess){
}
《睡眠》(2000年);
PS_OBJ_CycleData.PreviewPayroll(驱动程序)。单击();
PS_OBJ_CycleData.VerifyCalcPreviewPayrollBox(驱动程序);
对于(int x=0;x<9;i++){
String PreviewStatus=“//table[@id='cppProcessInfoTable_rows_table']//tr[@id='cppProcessInfoTable_row_0']]/td[以(@id,'cppProcessInfoTable_row_0_cell_2')开头];
ListStatus=driver.findElements(By.xpath(PreviewStatus));
WebElement status=status.get(x);
字符串pstatus=status.getText().trim();
System.out.println(“\n”+“status”+pstatus”);
字符串Status1=“完成”;
字符串Status2=“successfull”;
String Status3=“工资单延迟”;
字符串Status4=“错误”;
WebElement CalcPreviewPayroll=driver.findelelement(By.xpath(“/*[contains(@id,'cppBatch\u title')]);
如果(CalcPreviewPayroll.isDisplayed()&&pstatus.equals(状态1)| | pstatus.equals(状态2)){
PS_OBJ_CycleData.Close(驱动程序)。单击();
打破
}
如果(!CalcPreviewPayroll.isDisplayed()){
打破
}
如果(CalcPreviewPayroll.isDisplayed()&&pstatus.equals(状态3)| | pstatus.equals(状态4)){
PS_OBJ_CycleData.Close(驱动程序)。单击();
PS_OBJ_CycleData.VerifyCycleStatusID(驾驶员);
系统输出打印项次(“断环原因”+pstatus);
持续
}
}
//做点什么
}//**第二个内环端****
}//**回路的末端输出****

我不太清楚你所说的“第二个”循环是什么意思。为了清楚起见,我将把这些循环称为内部循环和外部循环

continue
基本上用于跳到循环的下一个迭代,其中
continue
位于循环的内部。因此,如果您有一个嵌套循环,将continue放置在内部循环中,将跳到自身的下一个迭代<代码>继续如果在内部循环中,则不会对外部循环产生任何影响

如果情况并非如此,那么要么是Java出了问题,要么是您的逻辑出了问题。我怀疑Java有什么问题


尝试使用调试器找出与条件变量关联的变量的值。您的调试器可以比我们更好地帮助您

您包含的代码太多了。考虑重新编写你的帖子。好的,给我一个1。你有没有删除和检查?是的,我用Stand改变了它的中断,它不回代码到第二个循环,如果它没有执行下一个重复的代码表,那么你最好的办法是学习如何调试。查找IDE的文档,了解如何放置断点,在调试模式下执行脚本,并观察代码流。这里有太多的代码,也有太多的代码缺失,很难说到底发生了什么。我是说第二个循环我在第二个循环中使用了continue,我的逻辑一定有问题,因为当转到我的else语句并单击continue时,它会暂停,然后在我的外部循环中执行代码。出于某种原因,当continue被执行时,它会绕过它所在的内部循环并将继续执行外环。。但是,我需要帮助了解原因,因为当在代码的第一部分中使用continue时,它可以正常工作。您可以使用continue的次数有限制吗?我发现了一个问题,我是针对(int x=0;x<9;I++)而不是针对(int x=0;x<9;x++)使用continue的,这会导致问题吗?我现在知道我使用continue的方式是错误的。谢谢,我不得不离开密码,头脑清醒地回来了