TOML設定オプション

Toml ファイルを使用した Grid 設定例。

CLI オプションに示されているすべてのオプションは、TOML ファイルを介して設定できます。このページでは、さまざまな Grid コンポーネントの設定例を示します。

オプションが変更または追加されたが、まだ文書化されていない場合、このドキュメントは古くなっている可能性があることに注意してください。そのような状況に遭遇した場合は、“Config help” セクションを確認し、このページを更新するプルリクエストを自由に送信してください。

概要

Selenium Grid は、設定ファイルに TOML 形式を使用します。設定ファイルはセクションで構成されており、各セクションにはオプションとそれぞれの値があります。

詳細な使用方法については、TOML ドキュメントを参照してください。解析エラーが発生した場合は、TOML linter を使用して設定を検証してください。

一般的な設定構造は次のパターンに従います

[section1]
option1="value"

[section2]
option2=["value1","value2"]
option3=true

以下は、Toml ファイルで設定された Grid コンポーネントの例です。コンポーネントは次の方法で起動できます。

java -jar selenium-server-<version>.jar <component> --config /path/to/file/<file-name>.toml

スタンドアロン

ポート 4449 で実行されているスタンドアロンサーバーと、新しいセッションリクエストのタイムアウトが 500 秒。

[server]
port = 4449

[sessionqueue]
session-request-timeout = 500

特定のブラウザと最大セッション数の制限

デフォルトで Firefox と Chrome のみが有効になっているスタンドアロンサーバーまたはノード。

[node]
drivers = ["chrome", "firefox"]
max-sessions = 3

ドライバの設定とカスタマイズ

カスタマイズされたドライバを備えたスタンドアロンまたはノードサーバー。これにより、Firefox Beta または Nightly を使用したり、異なるブラウザバージョンを使用したりできます。

[node]
detect-drivers = false
[[node.driver-configuration]]
max-sessions = 100
display-name = "Firefox Nightly"
stereotype = "{\"browserName\": \"firefox\", \"browserVersion\": \"93\", \"platformName\": \"MAC\", \"moz:firefoxOptions\": {\"binary\": \"/Applications/Firefox Nightly.app/Contents/MacOS/firefox-bin\"}}"
[[node.driver-configuration]]
display-name = "Chrome Beta"
stereotype = "{\"browserName\": \"chrome\", \"browserVersion\": \"94\", \"platformName\": \"MAC\", \"goog:chromeOptions\": {\"binary\": \"/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta\"}}"
[[node.driver-configuration]]
display-name = "Chrome Dev"
stereotype = "{\"browserName\": \"chrome\", \"browserVersion\": \"95\", \"platformName\": \"MAC\", \"goog:chromeOptions\": {\"binary\": \"/Applications/Google Chrome Dev.app/Contents/MacOS/Google Chrome Dev\"}}"
webdriver-executable = '/path/to/chromedriver/95/chromedriver'

Docker を使用したスタンドアロンまたはノード

各新しいセッションを Docker コンテナで実行できるスタンドアロンまたはノードサーバー。ドライバの検出を無効にし、最大 2 つの同時セッションを設定します。構成されたステレオタイプは Docker イメージにマッピングする必要があり、Docker デーモンは http/tcp 経由で公開する必要があります。さらに、ホスト上でアクセス可能なデバイスファイルを devices プロパティを通じてコンテナ内で利用できるように定義できます。Docker デバイスマッピングの仕組みの詳細については、docker ドキュメントを参照してください。

[node]
detect-drivers = false
max-sessions = 2

[docker]
configs = [
    "selenium/standalone-chrome:93.0", "{\"browserName\": \"chrome\", \"browserVersion\": \"91\"}", 
    "selenium/standalone-firefox:92.0", "{\"browserName\": \"firefox\", \"browserVersion\": \"92\"}"
]
#Optionally define all device files that should be mapped to docker containers
#devices = [
#    "/dev/kvm:/dev/kvm"
#]
url = "http://localhost:2375"
video-image = "selenium/video:latest"

WebDriver をサポートするサービスエンドポイントへのコマンドの中継

WebDriver をサポートする外部サービスを Selenium Grid に接続すると便利です。そのようなサービスの例としては、クラウドプロバイダーや Appium サーバーが考えられます。このようにして、Grid はローカルに存在しないプラットフォームとバージョンへのカバレッジを拡大できます。

以下は、Appium サーバーを Grid に接続する例です。

[node]
detect-drivers = false

[relay]
# Default Appium/Cloud server endpoint
url = "http://localhost:4723/wd/hub"
status-endpoint = "/status"
# Optional, enforce a specific protocol version in HttpClient when communicating with the endpoint service status (e.g. HTTP/1.1, HTTP/2)
protocol-version = "HTTP/1.1"
# Stereotypes supported by the service. The initial number is "max-sessions", and will allocate 
# that many test slots to that particular configuration
configs = [
  "5", "{\"browserName\": \"chrome\", \"platformName\": \"android\", \"appium:platformVersion\": \"11\"}"
]

Basic 認証が有効

Router/Hub/Standalone をユーザー名とパスワードで設定することにより、Basic 認証で Grid を保護できます。このユーザー/パスワードの組み合わせは、Grid UI をロードしたり、新しいセッションを開始したりするときに必要になります。

[router]
username = "admin"
password = "myStrongPassword"

以下は、構成されたユーザーとパスワードを使用してセッションを開始する方法を示す Java の例です。

ClientConfig clientConfig = ClientConfig.defaultConfig()
  .baseUrl(new URL("http://localhost:4444"))
  .authenticateAs(new UsernameAndPassword("admin", "myStrongPassword"));
HttpCommandExecutor executor = new HttpCommandExecutor(clientConfig);
RemoteWebDriver driver = new RemoteWebDriver(executor, new ChromeOptions());

他の言語では、URL http://admin:myStrongPassword@localhost:4444 を使用できます

特定のノードに一致させるためのカスタム機能の設定

重要: カスタム機能は、すべてのノードの設定で設定する必要があります。また、すべてのセッションリクエストに常に含める必要があります。

[node]
detect-drivers = false

[[node.driver-configuration]]
display-name = "firefox"
stereotype = '{"browserName": "firefox", "platformName": "macOS", "browserVersion":"96", "networkname:applicationName":"node_1", "nodename:applicationName":"app_1" }'
max-sessions = 5

以下は、そのノードを一致させる方法を示す Java の例です

FirefoxOptions options = new FirefoxOptions();
options.setCapability("networkname:applicationName", "node_1");
options.setCapability("nodename:applicationName", "app_1");
options.setBrowserVersion("96");
options.setPlatformName("macOS");
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444"), options);
driver.get("https://selenium.dokyumento.jp");
driver.quit();

ノードによるマネージドダウンロードの有効化。

ノードにダウンロードを自動的に管理するように指示できます。これにより、ノードは特定のセッションでダウンロードされたすべてのファイルを一時ディレクトリに保存し、後でノードから取得できます。この機能をオンにするには、以下の構成を使用します。

[node]
enable-managed-downloads = true

完全な例については、CLI セクションを参照してください。