2014-12-04 4 views
0

나는 다음과 같은 for 루프를 가지고있다. 그러나 어떤 이유 때문에 loop 내부의 if 구문에 문제가있다. 나는 루프를 제어하기 위해 카운터를 사용하지만 어떤 이유로 카운터가 0에서 시작하지 않고 임의의 숫자로 시작하는 것처럼 보입니다.셀레늄 Webdriver 루프 제어, 무한 루프 Java

누구든지 내 코드에 어떤 문제가 있는지 알 수 있습니다.

public static void chk_DateAreInRange() throws Exception{ 
    try 
    { 
     Date startDate = new Date(); 
     Date endDate = new Date(); 
     int abc = 0; 
     elementString = driver.findElement(By.id("ctl00_Content_gvList")); 
     final List<WebElement> dates = elementString.findElements(By.xpath(".//td[1]")); 
     do 
     { 

      for (WebElement date : dates) 
      { 
       System.out.println("inside dates for" +abc); 
       if(abc == 0) 
       { 
        System.out.println("inside if x=0"); 
        String[] parsedString = date.getText().toString().split("\\-");// splits the webelement into a string from the - icon 
        Date ddd = formatter.parse(parsedString[0]);//gets the date we need from string - 12 Nov 2014 
        String startdateString = formatter.format(ddd); 
        startDate = formatter.parse(startdateString); // convert the string back into a date 

       } 
       if(abc == 99) 
       { 
        System.out.println("inside if x=99"); 
        String[] parsedString = date.getText().toString().split("\\-");// splits the webelement into a string from the - icon 
        Date ddd = formatter.parse(parsedString[0]);//gets the date we need from string - 12 Nov 2014 
        String startdateString = formatter.format(ddd); 
        endDate = formatter.parse(startdateString); // convert the string back into a date 
       } 
       abc++; 
      } 

     }while(abc != 99); 
     if(getFromDateFull().before(startDate) || getToDateFull().after(endDate)){System.out.println("Date is not in range");} 
    }catch (Exception e){ 
     Log.error("TOP dropdown is not found on the PLP View Schedule Page"); 
     throw(e); 
     } 
    } 

콘솔 출력. 로

inside dates for349625 
inside dates for349626 
inside dates for349627 
inside dates for349628 
inside dates for349629 
inside dates for349630 
inside dates for349631 
inside dates for349632 
inside dates for349633 
inside dates for349634 
inside dates for349635 
inside dates for349636 
inside dates for349637 
inside dates for349638 
+1

이것은 Selenium과 어떤 관련이 있습니까? – SiKing

+0

그다지 많지는 않지만, 단지 이드가 그것을 다음과 같이 추가한다고 생각했습니다 : P – CoffeeTime

답변

0

당신은 당신의 테스트를 변경해야합니다 : 당신이 0하지만 두 번째 루프에서 시작 사실

}while(abc < 99); 
+0

은 매력처럼 작동했습니다 : – CoffeeTime

1

당신이 할 ABC++ 그래서 당신은 루프 마감 내부의 경우 99 개 이상의 요소로 List<WebElement> dates이있는 경우 당신의 ABC는 ... 그래서 당신은

while(abc != 99); 

이 traitment을 멈추지 않을 컨디셔닝 ... 99보다 큰

정밀 : 당신이 List<WebElement> dates에서 10 개 요소를 가질 수 있지만

  • 두 번째 루프가 시작 볼 수 있고 ABC = 10 다음 ABC = 99 그렇게

  • 다음 루프 ABC = 20, ABC를 계속! = 99 그래서

  • 10 루프 ABC = 100 ABC 후! = 99 그래서 다시하고 다시 계속이 ...

코드 경우에만 작동 계속 List<WebElement> dates은 1 요소, 3 요소 또는 11 요소를 포함합니다.)

+1

* "x = 0이면"* 여전히 볼 수 있지만 출력은 콘솔에서 이것을보기에는 너무 빠릅니다. – Dawnkeeper

+0

설명해 주셔서 감사합니다. – CoffeeTime