トップページ > Selenium API(逆引き) > 【Java】onException

【Java】onException・・・Exception発生後の処理を実施する

「onException」を実行することで要素がクリックされる直前/直後の処理を実施することが出来ます。

イベント処理をするためにまず初めにすることは、イベント捕捉クラスを定義することです。ここで、イベント捕捉クラスをExEventListnerクラスと命名します。ExEventListnerクラスは、AbstractWebDriverEventListenerクラスを継承して作成されたサブクラスです。AbstractWebDriverEventListenerクラスの関数はダミー実装がされているためExEventListnerクラスでイベントに対応した各関数をオーバーライドする必要があります。ここでは、「onException」の関数の内容をオーバーライドしています。

イベントを発生させる前にいくつかやるべきことがあります。まずイベント発生クラスである「EventFiringWebDriver」コンストラクタにWebDriverのインスタンスを指定して、イベント発生クラスのインスタンスを作成していきます。次にイベント捕捉クラスに対しても、newでインスタンスを作成します。そしてイベント発生クラスのregister関数で、引数にイベント捕捉クラスのインスタンスを指定することで、イベント発生がイベント捕捉クラスに通知できるようになります。

それでは、実際にイベント発生させていきます。イベント発生は、イベント発生クラスのインスタンスに対して操作することで発生させていきます。下記サンプルではまずGoogleページへ遷移しています。

この段階では、「onException」の関数が自動で呼び出される条件は満たしていません。この関数が自動で呼び出されるトリガーとなる操作(イベントが発生する操作)は、Exceptionが発生した時です。下記サンプルを例にすると、存在しないid属性値から要素を取得でExcetionが発生します。そのタイミングでイベントが発生し、「onException」に実装された処理が実施されます。

※イベント処理についてはこちら

説明

◆メソッド
  ・public void onException(java.lang.Throwable throwable, WebDriver driver)
◆使用形態
  ・上記メソッドはあらかじめAbstractWebDriverEventListenerクラスを継承して
         オーバーライドしておく。
◆備考
  ・このイベントはexceptionが起こることによって発生する
◆関連項目
  ・要素の値が変更される直前/直後の処理を実施する
  ・要素がクリックされる直前/直後の処理を実施する

サンプル

public class WebTest{
  public static void main(String[] args){
	//Chrome制御のためChromeDriverサーバーのパスを指定
	System.setProperty("webdriver.chrome.driver",
	                                "D:\\AutoTest\\chromedriver.exe");
	//Chromeを起動する
	WebDriver driver = new ChromeDriver();
	//対象のWebDriverをイベント発生クラスに渡しインスタンスを作成する
	EventFiringWebDriver eventFiringDriver = new EventFiringWebDriver(driver);
	//イベント捕捉クラスのインスタンスを作成する
	ExEventListner eventListener = new ExEventListner();
	//イベント捕捉クラスをイベント発生クラスへ登録する
	eventFiringDriver.register(eventListener);
	//指定したURLを開く
	eventFiringDriver.get("https://www.google.co.jp");
    //存在しないidの要素取得をしてExceptionを発生させる
    WebElement element = eventFiringDriver.findElement(By.id("abcde"));
  }
}
public class ExEventListner extends AbstractWebDriverEventListener {
  //exception発生後の処理
  @Override
  public void onException(java.lang.Throwable throwable,WebDriver driver){
    System.out.println("onException:Exception occurred!");
  }
}

実行結果

onException:Exception occurred!

カテゴリー

Selenium導入

APIリファレンス

その他

ページ上部へ戻る
トップページ > Selenium API(逆引き) > 【Java】onException
Copyright © 2016- Seleniumクイックリファレンス All Rights Reserved