8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Selenium/AppiumAdvent Calendar 2018

Day 16

Selenium GridのNodeでWebdriverを自動更新する

Last updated at Posted at 2018-12-17

この記事はSelenium/Appium Advent Calendar 2018の16日目です。

昨年はWebDriverの更新はWebdriverManagerに任せようという記事を書きました。
その記事の中で触れた、Selenium GridのNodeで自動的にWebDriverの自動更新を実現しているので小ネタですが、空いているようなので書かせて頂きます。

実装はかなり雑で、1日1回スレッドを起こしてWebDriverManagerで最新のWebDriverを更新しにいきます。
本当はテストの前処理として差し込むのがスマートなんですが、実現方法が分からない(調べてもない)のと、実用上困っていないので追求していません...

service.scheduleAtFixedRate(StartHub::setup, 0, 1, TimeUnit.DAYS);

private static void setup() {
    logger.info("update webdriver");
    WebDriverManager.chromedriver().setup();
    WebDriverManager.firefoxdriver().setup();
    WebDriverManager.edgedriver().setup();
    WebDriverManager.iedriver().setup();
}

コードの全量です。WebDriverの更新以外はSelenium GridのNodeを起動する以外していません。

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;

import org.openqa.grid.selenium.GridLauncherV3;

import io.github.bonigarcia.wdm.WebDriverManager;

public class StartHub {

    private static final Logger logger = Logger.getLogger(StartHub.class.getName());

    private static void setup() {
        logger.info("update webdriver");
        WebDriverManager.chromedriver().setup();
        WebDriverManager.firefoxdriver().setup();
        WebDriverManager.edgedriver().setup();
        WebDriverManager.iedriver().setup();
    }

    public static void main(String[] args) {
        ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
        service.scheduleAtFixedRate(StartHub::setup, 0, 1, TimeUnit.DAYS);

        // Start node
        GridLauncherV3.main(new String[]{"-port", "5555",
                "-role", "node",
                "-hub", "https://myjenkins.example.com:4444/grid/register",
                "-log", "selenium-grid.log"
        });
        logger.info("start hub");
    }


}

これをjarに固めてjavaコマンドを叩くことで常駐させています。

java -jar build/libs/start-selenium-grid-hub-1.0.jar

放っておいても勝手にアップデートしてくれるので大分楽かと思います。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?