2017-02-01 4 views
2

Selenium WebDriverスクリプトで1つの問題に直面しています。私のロジックでは、以下のシナリオでフォームの送信を確認します。Selenium WebDriverを使用して動的テキスト(成功と失敗のテキスト)を処理する方法

1.Submit form with already register details - Details already exists 
2.Submit Form with new details - Successfully added. 

は今、私の問題は、テキストメッセージが

driver.findElement(By.xpath("//div[@class='alert alert-success']")).getText(); 
driver.findElement(By.xpath("//div[@class='alert alert-error']")).getText(); 

以下のように異なるロケータを持っているされ、両方の今私はコードとしてJavaでセレンコードを必要とする、自動的に私のかどうかを確認するために、画面上のテキストに基づいてテキストを扱いますテストケースは合格/不合格です。このタイプの状況をウェブページに書き込む方法をご提示ください。

シンプル私は顧客がシステムに登録しているかどうかを確認したいのですが、そうでない場合は画面上のメッセージに基づいてシステムに登録する必要があります。

私は両方のxpathsを使用すると、システム内で1つのテキストを見つけて、もう1つは存在しないので、要素に例外が見つからないことを示しています。

+1

たぶん、あなたは 'try' /' catch'を使用する必要がありますか? – Andersson

答えて

1

を見つけました返します。私は見ましたが、1つの答えがすでにCSSに与えられていますが、あなたの元の投稿がXpathを参照している限り、Xpathソリューションはここにあります:

String isFormAlreadySubmitted = driver.findElement(By.xpath("//div[@class='alert alert-error' or @class='alert alert-success']")).getText();この時点以降

文の場合は、シンプルで流れを導くことができます。

if(isFormAlreadySubmitted.equals("Details already exist"){ 
System.out.println("Form already submitted!"); 
} 
else if(isFormAlreadySubmitted.equals("Successfully added"){ 
System.out.println("Successfully added a new record!"); 
} 
else{ 
System.out.println("Something went wrong! Couldn't get alert text, is alert present?"); 
} 
1

1つのメッセージが存在し、それ以外のメッセージが存在しない場合は、他のメッセージが存在しないため、NoSuchelementExceptionが返されます。そのような場合にテストが失敗しないようにするには、NoSuchelementExceptionをキャッチする必要があります。 driver.findElement(By.xpath("//div[contains(@class, 'alert']")).getText();で試してみて、どのテキストがあるかを確認することもできますが、私はあなたのページがどのように振る舞い、どのように見えるのかわからないので、動作します。

6

cssSelectorを使用することもできます。これは、両方のオプションをチェックし、最初のものは、文字列変数に、あなたのXpath検索の結果を代入して、そこから自分の流れを調節することができる

driver.findElement(By.cssSelector(".alert.alert-success, .alert.alert-error")).getText(); 
+0

素晴らしい回答、貴重な時間をありがとう、私の質問で答えてください。ありがとうございました。 –

+0

'or'構文を使用せずに、必要な要素を返す場合はセレクタに' .alert'を設定することもできます。 – mrfreester

+0

@mrfreesterおそらく、私はサイトに精通していないので、OPが提供するロケータを使用しています。 – Guy

関連する問題