会话功能是 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 文档提供了有关所有功能(共享的和特定于浏览器的)的苹果文档。