3

問題:- webelement (Button) isdisplayed() は、否定的なシナリオでは機能しません

要件:-ボタンが画面に表示されない場合にテスト フローを失敗させる必要があり、存在する場合はフローを続行します。

コード:-

if (driver.findElement(By.id("button")).isDisplayed() == false) {
System.out.println("The Button isn't present. Exiting!!");
driver.findElement(By.linkText("Logout")).click();
}
else
{
//Proceed with the positive flow
}

上記のコードでは、画面にボタンがまったく表示されない場合、テストは失敗するはずです (if ステートメントを実行する必要がありますが、そうではありません)。

4

3 に答える 3

2

TestAutomationEngr が述べたように、ページにはそのようなボタンが 1 種類しかないことを確認してください...

Webdriver で負のフローをテストできるもう 1 つの方法は、try と catchを使用することです。

あなたの場合、

boolean buttonFound=false;
try
{ 
    new WebDriverWait(driver,10).until(ExpectedConditions.visibilityOfElementLocated(By.id("button")));

    buttonFound=true;

}catch(Exception e)
{
    System.out.println("The Button isn't present. Exiting!!");
    driver.findElement(By.linkText("Logout")).click();
}

if(buttonFound)
{
  //positive flow
}

ここでは、要素が表示されるまで 10 秒間待機します。

  • 見つかった場合 buttonFoundは true に設定されるため、正のフローが実行されます

  • 見つからない場合は、catch 句のメッセージが表示され、ログアウト リンクがクリックされます

于 2013-11-04T06:07:15.650 に答える
1

実際、例外がスローされた場合にログアウトする必要はありません。これは、ドライバーが閉じられるとこのセッションが失われるためです。要素が存在しないか有効になっていない場合、次のコードはテストに失敗します。

WebElement elem = driver.findElement(By.id("button"));
Assert.assertTrue(elem.isEnabled());

最後に、テスト ティアダウンでドライバーを閉じる必要があります。

driver.close()
于 2013-11-04T15:09:34.310 に答える