工作階段功能是 Nightwatch(和其他 W3C WebDriver 用戶端)使用的一種請求/回應模型,用於定義它從 WebDriver 實作或 Selenium 伺服器所需的瀏覽器功能。WebDriver/Selenium 伺服器也會在瀏覽器工作階段初始化過程中,提供其支援的功能。

工作階段功能可以分為兩類

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 文件提供有關所有功能(包括共用和特定於瀏覽器的功能)的蘋果文件。