2017-12-05 8 views
0

특정 주식이 열리거나 닫히면 표시기가있는 웹 페이지가 있습니다. 그 경우에는 & else if 문을 설정하고 싶습니다. 어떤 이유로 나는 일식에 오류가 발생합니다.셀레늄 WD/Java | 'if'및 'else if'문을 생성 할 수 없습니다.

* 참고 : 도움이되는지 모르겠지만 코드를 '기본'인 새로운 빈 클래스에 복사/붙여 넣기하면 오류없이 작동하므로 코드 구조가 Ok입니다. 그렇 겠지.

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 

public class TestClock { 

public static void chromeMethod(WebDriver driver) { 
    System.setProperty("webdriver.chrome.driver", "C:\\automation\\drivers\\chromedriver.exe"); 
} 

public static void runTestClock(WebDriver driver) 
{ 


    WebElement Status = null; 
    if(Status == driver.findElement(By.cssSelector(".redClockBigIcon"))); 
    { 
     System.out.println("Stock is closed"); 
     driver.navigate().back(); 
    } 

    else if (Status == driver.findElement(By.cssSelector(".greenClockBigIcon"))); 
    { 
     System.out.println("Stock is open"); 

     driver.navigate().back(); 
    } 

} 
} 

나는 '다른 사람'에 구문 오류 :

토큰에

구문 오류 "다른",이 토큰

+4

길잃은 여분의';'이 있습니다. –

답변

0

게시 한 코드에는 몇 가지 문제점이 있습니다.

  1. 당신은 ifelse if 문장의 끝에 ;을 넣어. 둘 다 제거해야합니다.

  2. Status (현재는 null)을 .findElement() 반품과 비교하고 있습니다. 요소가 발견되지 않으면 예외를 throw하고 null 요소를 반환하지 않습니다. 이 문제를 해결하는 방법은 .findElements() (복수형, 요소 ,)을 사용하고 목록이 비어 있는지 확인하는 것입니다. 비어 있으면 요소를 찾을 수 없습니다.

  3. 귀하의 .back() 문 모두에 존재합니다. 이 때문에이 파일은 if에서 벗어나 실행될 수 있습니다. 재 작성 코드

    public static void runTestClock(WebDriver driver) 
    { 
        if (driver.findElements(By.cssSelector(".redClockBigIcon")).isEmpty()) 
        { 
         System.out.println("Stock is closed"); 
        } 
        else if (driver.findElements(By.cssSelector(".greenClockBigIcon")).isEmpty()) 
        { 
         System.out.println("Stock is open"); 
        } 
        driver.navigate().back(); 
    } 
    

사용중인 CSS 선택기를보고 ... 모두가 그렇게 말한다면, 나는 녹색은 재고가 열려 의미하고 빨간색이 닫혀 의미 생각합니다. 이것은 당신의 논리가 거꾸로되어 있음을 의미합니다. 내 생각에 너는 너의 메시지를 전환해야 할 것 같아 < -> 폐쇄하지만 너는 나보다 잘 알 것이다.

+0

답글이 놀랍습니다. 지난 노트에서 권장 한대로 CSS의 값을 전환했습니다. 학습에 대한 질문이 있습니다. 1) 왜 요소가 아닌 요소를 사용해야합니까? 2) .isEmpty()를 사용해야하는 이유는 예외를 & elseIf & else에 사용할 수 없습니까? 이게 맞습니까? 감사합니다. –

+0

1) 따라서 .findElement()는 단일 요소를 반환하기위한 것입니다. 문제는 의도 한 요소가 존재하지 않으면 예외가 발생한다는 것입니다. '.findElements()'를 사용하면 항상 콜렉션을 반환합니다.단일 요소가 발견되면 목록에는 단일 요소가 있습니다. 요소가 발견되지 않으면 목록은 비어있을 것입니다. 목록이 비어 있더라도 예외가 발생하지 않으므로 로케이터가 페이지에서 요소를 반환하는지 확인하는 것이 좋습니다. – JeffC

+0

2) 반환 된 목록이 비어 있는지 테스트하기 때문에'.isEmpty() '를 사용해야합니다. 목록이 비어 있으면 요소가 페이지에 없음을 의미합니다. 주식이 열려 있는지 또는 닫혀 있는지를 결정하기 위해'if'가 사용하는 조건입니다. – JeffC

2
else if (Status == driver.findElement(By.cssSelector(".greenClockBigIcon"))); 
여기

당신의 실수를 삭제 : 마지막 ; 삭제해야합니다

+0

신성 S *** ..... 죄송합니다. 신경 쓰지 않았습니다. Thanks/= –

+0

: D 문제 없음 ^^ –

0

; if와 else if 문장의 끝에는 (세미콜론)을 사용하십시오.