2016-10-13 9 views
0

指定されたテキストを持つweb要素がページに存在しないかどうかを確認するテストを作成します。私はページウィッヒのタグは、テキスト「dierdieboeboe」まだcatchブロックはスキップさが含まれて何も存在しないことを絶対的に確信しているが、findelementがNoSuchElementExceptionをスローしていない

public boolean checkOfAanvraagIsOpgevoerd (String titel) 
{ 

    String quote = "\""; 
    String titelMetQuotes = quote + titel +quote; 
    titelMetQuotes = "dierdieboeboe"; 
    boolean isOpgevoerd=false; 
    try { 
     driver.findElement(By.xpath(".//*[@id='listRequests']//h4/a[contains(text(),"+titelMetQuotes+")]")); 
     isOpgevoerd=true; 
    } catch (NoSuchElementException NE) { 
     NE.printStackTrace(); 
    } 
    return isOpgevoerd; 
} 

:これは仕事をしているメソッドのコードです。 xpath式のh5のインスタンスh4を置き換えると、期待通りにNoSuchElementExceptionがスローされます。式の包含部分は無視されるようです。

+1

とあらゆる種類の最初の要素を見つけるためにあなたのXPath式で先頭のドットを必要としません。ブラウザのコンソールでXPathを手動で実行すると結果は得られますか? –

+0

この式をFirepathに入力すると、結果は「一致しません」と表示されます(この場合、結果は「一致しません」という結果になります)。$ x( ".//* id = 'listRequests'ノード " – Frank

+0

手動で結果が得られない場合は、タイミングの問題です。セレンによって検出された要素は、おそらく非同期の更新/アクションの後に削除されます。それが事実であるかどうかを確認するために遅延を加えてみてください。そうであれば、テストを同期させるウェイターを追加します。 –

答えて

0

は(実際のテキストの周りの単一引用符に注意してください)、これを試してみてください:

By.xpath("//*[@id='listRequests']//h4/a[contains(text(),'"+titelMetQuotes+"')]") 

containsは、2つの文字列を取る関数です。したがって、変数titelMetQuotesのテキストを引用符で囲む必要があります。明らかに、この場合、一重引用符を使用する方が簡単です。それは実際にコード内の別の欠陥のための引用符を持っていないので、

また、変数名(引用符でTITEL)が非常に紛らわしいです:

String titelMetQuotes = quote + titel +quote; 
titelMetQuotes = "dierdieboeboe"; 

2行目では、単に非引用符で囲まれた文字列を引用符で囲んでタイトルを上書き。

最後に、あなたはそれはタグが隠されている可能性があり、ID listRequests

+0

ありがとうございます。特定のテキストを持つ要素が存在する場合に、特定のテキストを持つ要素が存在しない場合に機能します。あなたは私の一日Würgspaßを作った。なぜこれが機能するのか説明できますか? – Frank

+0

@Frank聞いてよかった。私は答えに説明を加えました。 –

+0

先端ドットの余分な先端のためのthnx。デバッギングの理由から "dierdieboeboe"のコードラインが追加されました。引用符が上書きされてしまったのを忘れました。まだ引用符なしの表現で何が見つかったのだろうと思っています。 – Frank