セッション機能は、Nightwatch(およびその他のW3C WebDriverクライアント)が、WebDriverの実装またはSeleniumサーバーから必要とするブラウザ機能を定義するために使用するリクエスト/レスポンスモデルです。WebDriver/Seleniumサーバーは、ブラウザセッションの初期化プロセスの一部として、サポートされている機能も提供します。

セッション機能は2つのカテゴリに分類できます。

1. 入力機能

新しいブラウザセッションを作成するために、Nightwatchは必要な機能をWebDriverサービスに提供する必要があります。

以下は、Nightwatchが最初の/sessionリクエストの一部として送信する機能の例です。

Request POST /session  
{
 desiredCapabilities: {
   browserName: 'chrome',
   name: 'To-Do List End-to-End Test'
 }
}

2. ブラウザ機能

WebDriverサービスは、受信した入力機能を使用してブラウザセッションを作成し、サポートされている機能で応答します。

以下は、Nightwatchが最初の/session応答の一部として受信するブラウザ機能の例です。

Response 200 POST /session (724ms)
{
 value: {
   capabilities: {
     acceptInsecureCerts: false,
     browserName: 'chrome',
     browserVersion: '102.0.5005.61',
     chrome: {
       chromedriverVersion: '101.0.4951.41 (93c720...)'
     },
     'goog:chromeOptions': { debuggerAddress: 'localhost:52470' },
     networkConnectionEnabled: false,
     pageLoadStrategy: 'normal',
     platformName: 'mac os x',
     proxy: {},
     setWindowRect: true,
     strictFileInteractability: false,
     timeouts: { implicit: 0, pageLoad: 300000, script: 30000 },
     unhandledPromptBehavior: 'dismiss and notify',
     'webauthn:extension:credBlob': true,
     'webauthn:extension:largeBlob': true,
     'webauthn:virtualAuthenticators': true
   },
   sessionId: '15d21f2132ff0675a97ca419bf6fbd4'
 }

共有機能

このセットに含まれる機能の一部は標準であり、すべてのブラウザ間で共有されますが、セットにはブラウザ固有の機能も含まれる可能性があり、これらは常にプレフィックスが付いています。

機能は、特定の機能のサブセットをサポートするドライバーを要求するために使用できます。これは、ウィンドウの寸法をリサイズする機能など、特定のブラウザ機能を要求するために使用できますが、分散環境で選択肢のマトリックスから特定のブラウザ構成を選択するためにも使用されます。

Seleniumドキュメントには、共有およびブラウザ固有の両方のすべての機能に関する優れたドキュメントが記載されています。