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

【Java】beforeGet/afterGet・・・URLが遷移する直前/直後の処理を実施する

【PR】業界トップクラスの「高単価報酬」「低マージン」を実現!レバテックフリーランス

「beforeGet/afterGet」を実行することでURLが遷移される直前/直後の処理を実施することが出来ます。

イベント処理をするためにまず初めにすることは、イベント捕捉クラスを定義することです。ここで、イベント捕捉クラスをDriverEventListenerクラスと命名します。DriverEventListenerクラスは、 WebDriverListenerインターフェースを継承して作成されたサブクラスです。DriverEventListenerクラスでイベントに対応した各関数をオーバーライドします。ここでは、「beforeGet/afterGet」の関数の内容をオーバーライドしています。

イベントを発生させる前にやるべきことがあります。イベント発生クラスである「EventFiringDecorator」コンストラクタの引数にイベント捕捉クラスとWebDriverのインスタンスを指定して、イベント発生クラスのインスタンスを作成する必要があります。そうすることでイベント発生がイベント捕捉クラスに通知できるようになります。

それでは、実際にイベント発生させていきます。イベント発生は、イベント発生クラスのインスタンスに対して操作することで発生させていきます。下記サンプルではGoogleページへの遷移でイベントを発生させています。もっと手前の段階でYahooページへ遷移していますが、イベント発生クラスのインスタンスに対して操作しているわけではないのでこの段階ではイベントは発生しません。

下記サンプルではイベント発生時、URL遷移前後のURLがコンソール出力されるよう実装されています。イベント発生直前はYahooページのURLが出力され、イベント発生直後はGoogleページのURLが出力されます。

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

説明

◆メソッド
  ・public void beforeGet(WebDriver driver, java.lang.String url)
  ・public void afterGet(WebDriver driver, java.lang.String url) 
◆使用形態
  ・上記メソッドはあらかじめWebDriverListenerインターフェースを継承して
         オーバーライドしておく。
◆備考
  ・このイベントはdriver.get(String url)メソッド実行にて発生する
◆関連項目
  ・javascriptを実行する直前/直後の処理を実施する
  ・要素に値が入力される直前/直後の処理を実施する

サンプル

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.events.EventFiringDecorator;
import org.openqa.selenium.support.events.WebDriverListener;

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();
    //指定したURLを開く
    driver.get("https://www.yahoo.co.jp");
    //イベント捕捉クラスのインスタンスを作成す	
    WebDriverListener eventListener = new DriverEventListener();
    //対象のWebDriverとイベント捕捉クラスをイベント発生クラスへ登録する
    WebDriver decorated = new EventFiringDecorator(eventListener).decorate(driver);
    //別サイトへ遷移する
    decorated.get("https://www.google.co.jp");
  }
}
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.events.WebDriverListener;

public class DriverEventListener implements WebDriverListener{
  //サイト遷移直前
  @Override
  public void beforeGet(WebDriver driver, java.lang.String url) {
    System.out.println("beforeGet:" + driver.getCurrentUrl());
  }
  //サイト遷移直後
  @Override
  public void afterGet(WebDriver driver, java.lang.String url) {
    System.out.println("afterGet:" + driver.getCurrentUrl());
  }
}
※selenium version 4.1.4で動作確認をしています(ブラウザのUIや属性値などが変更された場合、実行結果が異なる可能性があります)

実行結果

beforeGet:https://www.yahoo.co.jp/
afterGet:https://www.google.co.jp/
befor_after_get
 ※GoogleおよびGoogleロゴはGoogle Inc.の登録商標であり、同社の許可を得て使用しています。

Warning: Invalid argument supplied for foreach() in /home/users/1/monda-muki/web/seleniumqref.com/api/java/event/Java_NavigateTo.html on line 192

JavaAPIアクセス TOP10
過去1週間(3/21~3/27)

    カテゴリー

    環境構築

    APIリファレンス

    その他

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