2017-12-15 20 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を返しません。 /他のアプローチの代わりに、例外がスローされる場合は、希望した場合、あなたは、tryキャッチ

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(Exception e)で例外をキャッチすべきではありませんか? – Vizag

+0

はい、私はそれについて忘れていた、モバイルで入力していた – Marcel

+0

ありがとうございました。 – Vizag

1

を使用することができます - ここのJavadocからの提案です:

findElementが非を探すために使用すべきではありません現在の要素では、 findElements(By)を使用し、代わりに長さゼロの応答をアサートします。

関連する問題