2017-12-15 6 views
0

Ich öffne eine Mail in einem Posteingang und greife eine URL aus dem offenen Mail-Inhalt, die ich für weitere Aktionen verwenden möchte. Die URL verwendet werden könnte nur eine der oben genannten CSS-Elemente sein (aus verschiedenen E-Mail)Css-Element kann nicht durch IfElse-Anweisung gefunden werden

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); 

für mich hier das Skript versagt das Element mit folgenden Fehlern zu lokalisieren (es ist in einer Art und Weise, ist korrekt, weil die erforderliche URL kann durch den ‚anderen‘ Teil des Codes gepackt werden.

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

ich erwartete die ‚if‘ Anweisung für URL zunächst laufen zu überprüfen, wenn sie nicht da ist, dann will ich das " else 'Anweisung ausgeführt werden und dann die Url aus dem Nachrichtentext holen.

Bitte helfen Sie mir, indem Sie zeigen, wo ich Fehler mache. Vielen Dank für Ihre Vorschläge. Grüße,

Antwort

1

Find-Element wird eine NoSuchWebElementException werfen, wenn es nichts findet, wird es null zurückgeben. Sie können

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

Anwendung dieses Getting Syntaxfehler auf Token "catch", endlich erwartet? Auch sollten wir die Ausnahme nicht mit "catch" (Ausnahme e) fangen? – Vizag

+0

Ja ich habe das vergessen, tippte auf Handy – Marcel

+0

Got it thank you. – Vizag

1

einen Versuch catch verwenden Wenn Sie lieber if/else Ansatz statt Ausnahme geworfen werden - hier ist ein Vorschlag von javadoc:

findElement sollte nicht für nicht suchen verwendet werden Vorhandene Elemente, verwenden Sie findElements (By) und aktivieren Sie stattdessen die Nulllängenantwort.