2017-12-15 15 views
0

받은 편지함에서 메일을 열고 열려있는 메일 콘텐츠의 URL을 가져옵니다.이 메일은 이후 작업에 사용합니다. 사용하는 URL이 (다른 메일)에서 상기 CSS 요소 하나만 여기서 날IfElse 문을 통해 CSS 요소를 찾을 수 없습니다.

if (getDriver().findElement(By.css("body > p:nth-child(5)")) != null) { 
    String URL = getDriver().findElement(By.css("body > p:nth- child(5)")).getText(); 
} else { 
    String mailBody = getDriver().findElement(By.css("body > p:nth-child(2)")).getText(); 
    String[] temp = mailBody.split("\n"); 
    String URL = temp[2]; 
    System.out.println(URL);  
} 

String resetLink = URL; 
System.out.println(resetLink); 
getDriver().get(resetLink); 

스크립트 아래 에러 요소를 찾는 데 실패 할 수있다 (한 방향으로 정확 그것을이므로 필요한 URL이 코드의 '다른'부분으로 잡고 할 수 있습니다.

NoSuchWebElementException: Unable to locate element: By[method = css, selector = "body > p:nth-child(5)"] 

내가 첫 번째 URL을 확인하기 위해 '경우'문을 실행하기 위해 기다리고 있었다, 그것은 존재하지 않는 경우, 그때 내가 원하는 ' else 문을 실행하고 메일 본문에서 URL을 가져옵니다.

내가 실수를 저지르는 곳을 지적하여 도와주세요. 제안 해 주셔서 감사합니다. 안부,

답변

1

Find 요소는 NoSuchWebElementException을 던집니다. 아무것도 찾지 못하면 null을 반환하지 않습니다. 대신 예외/다른 접근 방식이 던져지는 경우 원하는 경우 당신은 시도 캐치

WebElement element; 
String URL; 

try { 
    element = getDriver().findElement(By.css("body > p:nth-child(5)")); 
    URL = element.getText(); 
} catch (Exception e) { 
    String mailBody = getDriver().findElement(By.css("body > p:nth-child(2)")).getText(); 
    String[] temp = mailBody.split("\n"); 
    URL = temp[2]; 
    System.out.println(URL); 
} 
+0

토큰 "catch"에 구문 오류가 발생했습니다. catch (Exception e)를 사용하여 예외를 catch하면 안됩니까? – Vizag

+0

네, 그걸 잊어 버렸습니다. 휴대폰으로 타이핑 했어요. – Marcel

+0

고맙습니다. – Vizag

1

을 사용할 수 있습니다 - 여기에 자바 독의 제안은 다음과 같습니다

findElement은 비를 찾기 위해 사용되어서는 안

현재 요소를 사용하려면 findElements (By)를 사용하고 길이가 0 인 응답을 대신 지정하십시오.