私は以下のアラートを持っています。問題は、wait.until(ExpectedConditions.alertIsPresent())
行のエラーがUnhandledAlertException
から返されていることです。ただし、画面上でトリガーされたアラートが表示されています。 UnhandledAlertException
を削除すると、UnhandledAlertException
というエラーが表示されます。これに対する解決策を提供してください、そして、何が起こったのか分かりますか? `アラートを処理する際の支援が必要です - アラートが存在するのを待っています&未処理のアラート例外
//Alert
Alert getAlert() {
try{
Alert alert = driver.switchTo().alert();
String alertCheck = alert.getText();
this.bcase = true;
System.out.println(alertCheck);
if(alertCheck.equals("Define higher than 0 quantity for all products")){
m.print("Correct error message appeared! User cannot advance further!");
} else if(alertCheck.equals("Invalid Payment Document Number")){
m.print("Correct error message appeared! User cannot advance further!");
}else if (alertCheck.equals("Define rates for all products")){
m.print("Correct error message appeared! User cannot advance further!");
} else if (alertCheck.equals("Define delivery dates for all products")){
m.print("Correct error message appeared! User cannot advance further!");
} else if(alertCheck.equals("NOT IMPLEMENTED YET - WAITING DELIVERY DOC INPUT")){
m.print("Correct error message appeared! User cannot advance further!");
}else if (alertCheck.equals("You must upload an invoice file!")){
m.print("Correct error message appeared! User cannot advance further!");
} else if (alertCheck.equals("You must upload a payment order file!")){
m.print("Correct error message appeared! User cannot advance further!");
} else if (alertCheck.equals("Invalid Payment Document Date")){
m.print("Correct error message appeared! User cannot advance further!");
} else if (alertCheck.equals("Invalid Payment Document Number")){
m.print("Correct error message appeared! User cannot advance further!");}
else if (alertCheck.equals("Invalid Payment Document Date")){
m.print("Correct error message appeared! User cannot advance further!");}
else if(driver.findElement(By.xpath("//*[@class='btn pull-left btn-default input-sm'][text()='Open Order Request']")).isDisplayed()){
this.bcase = false;
m.print("(FAIL!!!) The user can advance with unselected/wrongly completed fields, even though an error message is present! (FAIL!!!)");
} else {m.print("(FAIL!!!) The user cannot advance, but there is no pop-up message informing him of the problem! (FAIL!!!)");}
driver.switchTo().alert().accept();
return alert;
} catch (NoAlertPresentException e){
m.print("(FAIL!!!) The user can advance with wrongly completed fields, without any error popup to inform them! (FAIL!!!)");
this.bcase = false;
return null;
} catch (UnhandledAlertException f){
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = driver.switchTo().alert();
String alertCheck = alert.getText();
if (alertCheck.equals("You must upload an invoice file! You must upload a payment order file!")){
m.print("Correct error message appeared! User cannot advance further!");
} else if(driver.findElement(By.xpath("//*[@class='btn pull-left btn-default input-sm'][text()='Open Order Request']")).isDisplayed()){
this.bcase = false;
m.print("(FAIL!!!) The user can advance with unselected/wrongly completed fields, even though an error message is present! (FAIL!!!)");
}driver.switchTo().alert().accept();return null;
}
}
`
をテストし 'switch'代わりに大きな'場合/他if'ブロックの使用を検討してください。これにより、コードをはるかに読みやすく保守しやすくなります。 また、これは定型的なコード 'm.print("正しいエラーメッセージが表示されました。ユーザーはさらに進めません! ");'文章の前に 'String message'オブジェクトを作成し、' m.print ); '。 – JDelorean
そして、このテストではどうなるのですか?else if(driver.findElement(By.xpath( "* * [@ class = 'btnプル - 左btn-デフォルト入力-sm'] [text()= 'Open Order Request' ] "))。isDisplayed()){ this.bcase = false; m.print( "(FAIL !!!)エラーメッセージが表示されているにもかかわらず、未選択/間違って完了したフィールドで進めることができます(FAIL !!!)"); '?私はalertCheckの後に切り替えるので、それはalertCheckステートメントではありません。また、例外を「ケース」シナリオにどのように統合するのですか? – Tudor
alertcheck以外の部分を 'switch'文のdefaultセクションの下に置くことができます。例外はうまくいきますが、彼らは現在と同じように 'switch 'とまったく同じように動作するはずです。 – JDelorean