2012-01-06 11 views
2

Seleniumは例外を処理する方法を教えてください。私はここ数ヶ月からSeleniumを使用しています。テストケースが非常に不均等な形で実行されていたため、問題に直面しています。例外がスローされ、再び同じテストケースを実行すると、順番に実行されます。これはエラーか例外ですか?Selenium WebDriverの例外処理

+0

問題を具体的に挙げてください。あなたはコンソールやログでどのようなエラーや問題を発見しましたか? –

答えて

2

webdriverとのインターフェイスに使用している言語で例外処理を使用できます。

WebDriver driver = new InternetExplorerDriver(); 
try 
{ 
    // do something with webdriver, e.g. 
    driver.get("http://localhost/"); 
    driver.findElement(By.name("btn")).click(); 
} 
catch (Exception) 
{ 
    // Handle exception, ignore it or log it 
} 
+0

これは例外を処理するための貧弱な方法です。予想される例外についてより具体的に説明する必要があります。 –

+0

例外が非同期にスローされた場合、これはどのように動作するはずですか? –

2

あなたのSeleniumテストは失敗する可能性がありますが、スローされた例外が原因ではありません。あなたのテストが例外から失敗している場合は、例外処理がない可能性があります。これにより、WebDriverオブジェクトをクリーンアップする機会はありません。

あなたの条件の下でテストが失敗するはずです。これは一般化されています。なぜなら、テストがどのように書かれ、例外がスローされるのかによって異なります。たとえば、NullPointerExceptionのような例外は発生しないはずですが、ElementNotFoundExceptionなどのようになっている場合は、ページが十分に高速に読み込まれていない可能性があります。この場合、暗黙の待機時間が長くなります。例外がスローされた場所で本当に例外的なケースが発生した場合、それを処理する方法を決定する必要があります。テストの最後に後でそれをやり直すかどうか、エラーログなどを出力してください。

+0

マイク、私はタイムアウトエラーを処理するための2つの方法を作っていました。私はそれがスレッドのためだと思っていました。はい、私はタイムアウトの問題を解決できるようになりました。私は以前の質問で議論した。 –

+0

ケイティ、タイムアウトの問題はどうやって解決しましたか?私もタイムアウトと苦労している、あなたのコードを表示しますか? –

+0

public void run(){ try { Thread.sleep(タイムアウト* 1000); /*タイムアウトが発生しました*/ ThreadReturn.save(new TimeoutException( "ページが読み込まれるのをタイムアウトしました")); /* Stop WebDriver.get */ ロボットロボット=新しいロボット(); robot.keyPress(KeyEvent.VK_ESCAPE); } catch(InterruptedException ex){ return; } catch(AWTException ex){ System.out.println( "ESCを押したときにエラーが発生しました"); ex.printStackTrace(); } –