2016-07-06 3 views
0

Excelシートから入力データを取得しています。forループを使用して行を繰り返します。要素がSeleniumに配置されていなくても、テストフローを続けることはできますか?

要素が見つからないと仮定すると、フローは停止します。しかし、次のページへの移動に失敗したページでスクリーンショットを撮って、フローを継続したい。

Iは方法の下に使用してみました。私は別のクラスからの入力を取得するので、どのようにループの流れを中断することなく、forループ続けることができる

@AfterMethod 
public void tearDown(ITestResult result) { 
    if (ITestResult.FAILURE == result.getStatus()) { 
     try { 
      TakesScreenshot ts = (TakesScreenshot) driver; 
      File source = ts.getScreenshotAs(OutputType.FILE); 
      FileUtils.copyFile(source, new File("D:\\Screenshot" + result.getName() + ".png")); 
      System.out.println("Screenshot taken"); 
     } catch (Exception e) { 
      System.out.println("Exception while taking screenshot " + e.getMessage()); 
     } 
    } 
}  

希望しました。

ありがとうございました。

+0

あなたのためにtearDownメソッドを呼び出しますか? –

+0

私たちはどんな要素について話していますか?また、おそらく関連しているので、_for-loop_を含むメソッドを表示して、何をしているのかを確認してください。ほとんどの場合、例外がスローされたときに 'try-catch'ブロックを追加してスクリーンショットを撮ることができますが、この時点では私たちは推測しかできません。 – Morfic

+0

いいえ、このメソッドは失敗時に呼び出されます@ Leon – Prabhu

答えて

0

てみキャッチあなたは要素が存在しない可能性がいくつかのコードを追加する必要がforループ内である必要があり、その漁獲量ならば、それは

for(...) 
{ 
    try 
    { 
     //your code from excel 
    } 
    catch(Exception ex) 
    { 
     //if throwing exception take screenshot 
    } 
} 
+0

しかし、セレンのコードは別の方法ですが、動作するかどうかは疑問です – Prabhu

+0

@Prabhuループを続行したい場合は、内部にスローされた例外をキャッチする必要があります。それ以外の場合、ループは最初の例外スローで停止するので、テストのアーキテクチャを再考する必要があります。 – Morfic

+0

セレニウムが特定の情報からのパラメータを持つforループから実行されるメソッドである場合、それはエラーのあるものをスキップしてセレンメソッドから例外をスローしようとします。 –

0

をスクリーンショットを取ると、ループ内の次の要素に続け、それが存在するかどうかを確認してください。そうでない場合は、スクリーンショットを撮り、テストを続行してください。私はあなたのコードを持っていませんが、基本的な考え方を与えるべきである簡単な例がここにあります。

tearDown()メソッドにコードを追加する必要はありません。

+0

答えに感謝しますが、エラーがスローされます: – Prabhu

+0

独自のロケータを追加しましたか?どのようなコードを使用していますか?どのようなエラーがスローされましたか? – JeffC

関連する問題