1

私はSeleniumを初めて使用しますが、Assertequalsが失敗したときにスクリーンショットを撮るSeleniumで立ち往生しています。TestNGを使用しています。

サーバー側でテストケースが失敗した場合、ページのスクリーンショットを撮る必要があります。これにより、どこで問題が発生したかを正確に知ることができます。

コードをtrycatchブロックでラップし、catchでスクリーンショットを撮っています。

スクリーンショット機能は、要素が表示されない、要素をクリックできないなどのセレンの問題が発生した場合に機能します。

しかし、これはAssert.equals()では失敗します。Assert.assertEquals()が失敗すると、キャッチしてスクリーンショットを撮ることを期待しています。誰かが私の疑問を明確にしてくれませんか?

以下はコードスニペットで、これを達成しようとしている方法です。

try {


Assert.assertEquals(expected,actualoutput,message) //it fails

}

catch {
Selenium taking screenshot  // iam not able to take screenshot
}
4

3 に答える 3

0

例外をキャッチしている可能性がありますが、失敗したときにアサートするとエラーがスローされます。

ただし、testngは、テスト全体で失敗のスクリーンショットを撮るロジックを共有できる他のフックを提供すると思います。

これを実現する1つの方法は、スクリーンショットを取得するコードをITestListenerインターフェイスによって提供されるonTestFailureに配置することです。このようにして、すべての検証をtry-catchブロックに入れることを回避できます。

最近、TestNGは、アサートを実行する際の柔軟性も追加しました。あなたもそれを探索してみることができます。

于 2012-11-08T05:54:38.267 に答える
0

コメントは真実ですが、回避策を提供します-に変更Assertしてくださいif

if (!message.equals(expected)){
   takeScreenshot(outputfile.jpg);
}
于 2012-11-07T09:35:49.773 に答える
0

失敗した場合に画面を短くするためにメソッドを@AfterMethod呼び出すアノテーションを使用することをお勧めします@OverrideResult

@AfterMethod
        public void onTestFailure(ITestResult testResult) throws IOException {
          if(testResult.getStatus() == ITestResult.FAILURE){
              System.out.println(testResult.getStatus());
            }

@Override
public void onTestFailure(ITestResult result) {
        System.out.println("***** Error " + result.getName() 
                                         + " test has failed *****");

        <Code and Logic>
  }
于 2015-12-07T06:10:33.647 に答える