フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

docker-composeでSelenium Gridの環境を構築する

はじめに

Selenium Gridとは

Selenium Gridは、複数のマシンでテストを並行して簡単に実行できるようにする。スマートなプロキシサーバー。これは、1つのサーバーがハブとして機能する。リモートWebブラウザインスタンスにコマンドをルーティングすることによって行われる。 このハブは、JSON形式のテストコマンドを複数の登録済みグリッドノードにルーティングできる。

複数のマシンでテストを同時に実行し、ブラウザーごとに異なるテストを実行することができる。ブラウザーを一元的に管理できる。Selenium Gridを使用すると、複数のマシンとブラウザーで1つのテストをまとめて実行できるため、クロスブラウザーのテストが簡単になり、結果の分析と比較が簡単になります。

Hubとは

WebDriverクライアントからのアクセス要求を受け入れ、JSONテストコマンドをノード上のリモートドライブにルーティングするサーバーです。 クライアントからの指示を受け取り、それらをさまざまなノードで並行してリモートで実行します

ノードとは

ネイティブOSとリモートWebDriverで構成されるリモートデバイスです。JSONテストコマンドの形式でハブからリクエストを受け取り、WebDriverを使用してそれらを実行します

始めに試したこと

Docker Composeのサンプルがサイトにあったので、それを試しに実行した。

バージョン2の場合

バージョン3の場合

上記の設定を元に自分の開発環境で docker-compose up -dを実行してサイトにアクセスしたところ Habとノードの連携が取れていないことを確認する

version: "2"
services:
  (※ Web 及び DBのコンテナーの指定をする)
  chrome:
    image: selenium/node-chrome:4.0.0-beta-1-prerelease-20201202
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
    ports:
      - "6900:5900"
  selenium-hub:
    image: selenium/hub:4.0.0-beta-1-prerelease-20201202
    container_name: selenium-hub
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"

実際に成功した設定

  • 下記の設定を試して再度、 docker-compose up -dを実行する
version: "2"
services:
  (※ Web 及び DBのコンテナーの指定をする)
  hub:
    image: selenium/hub
    ports:
      - "4444:4444"
    environment:
      GRID_MAX_SESSION: 16
      GRID_BROWSER_TIMEOUT: 3000
      GRID_TIMEOUT: 3000
  chrome:
    image: selenium/node-chrome
    container_name: web-automation_chrome
    depends_on:
      - hub
    environment:
      HUB_PORT_4444_TCP_ADDR: hub
      HUB_PORT_4444_TCP_PORT: 4444
      NODE_MAX_SESSION: 4
      NODE_MAX_INSTANCES: 4
    volumes:
      - /dev/shm:/dev/shm
    ports:
      - "9001:5900"
    links:
      - hub

実行結果

  • 下記のようにhubとノードが連携されており、chromのインスタンスが4つ起動していることを確認できた。 あとはこちらを元にテストを書いていけたらいいなぁと思っております。 f:id:PX-WING:20201204004940p:plain