selenium-webdriver
Version:
The official WebDriver JavaScript bindings from the Selenium project
116 lines (115 loc) • 13.2 kB
JavaScript
;
// Licensed to the Software Freedom Conservancy (SFC) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The SFC licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
Object.defineProperty(exports, "__esModule", { value: true });
exports.Session = void 0;
require("./browser.js");
require("./browsing_context.js");
require("./common.js");
const record_js_1 = require("../serialization/record.js");
const enum_js_1 = require("../serialization/enum.js");
const union_js_1 = require("../serialization/union.js");
const domain_js_1 = require("../domain.js");
const SessionCapabilitiesRequest = (0, record_js_1.defineRecord)('session.CapabilitiesRequest', [{ "name": "alwaysMatch", "wire": "alwaysMatch", "required": false, "type": { "ref": "session.CapabilityRequest" } }, { "name": "firstMatch", "wire": "firstMatch", "required": false, "type": { "list": { "ref": "session.CapabilityRequest" } } }]);
const SessionCapabilityRequest = (0, record_js_1.defineRecord)('session.CapabilityRequest', [{ "name": "acceptInsecureCerts", "wire": "acceptInsecureCerts", "required": false, "type": { "primitive": "boolean" } }, { "name": "browserName", "wire": "browserName", "required": false, "type": { "primitive": "string" } }, { "name": "browserVersion", "wire": "browserVersion", "required": false, "type": { "primitive": "string" } }, { "name": "platformName", "wire": "platformName", "required": false, "type": { "primitive": "string" } }, { "name": "proxy", "wire": "proxy", "required": false, "type": { "ref": "session.ProxyConfiguration" } }, { "name": "unhandledPromptBehavior", "wire": "unhandledPromptBehavior", "required": false, "type": { "ref": "session.UserPromptHandler" } }], { "extensible": true });
const SessionCapabilityResponse = (0, record_js_1.defineRecord)('session.CapabilityResponse', [{ "name": "acceptInsecureCerts", "wire": "acceptInsecureCerts", "required": true, "type": { "primitive": "boolean" } }, { "name": "browserName", "wire": "browserName", "required": true, "type": { "primitive": "string" } }, { "name": "browserVersion", "wire": "browserVersion", "required": true, "type": { "primitive": "string" } }, { "name": "platformName", "wire": "platformName", "required": true, "type": { "primitive": "string" } }, { "name": "setWindowRect", "wire": "setWindowRect", "required": true, "type": { "primitive": "boolean" } }, { "name": "userAgent", "wire": "userAgent", "required": true, "type": { "primitive": "string" } }, { "name": "proxy", "wire": "proxy", "required": false, "type": { "ref": "session.ProxyConfiguration" } }, { "name": "unhandledPromptBehavior", "wire": "unhandledPromptBehavior", "required": false, "type": { "ref": "session.UserPromptHandler" } }, { "name": "webSocketUrl", "wire": "webSocketUrl", "required": false, "type": { "primitive": "string" } }], { "extensible": true });
const SessionProxyConfigurationUnion = (0, union_js_1.defineUnion)('session.ProxyConfiguration', { "by": "proxyType", "variants": [{ "value": "autodetect", "ref": "session.AutodetectProxyConfiguration" }, { "value": "direct", "ref": "session.DirectProxyConfiguration" }, { "value": "manual", "ref": "session.ManualProxyConfiguration" }, { "value": "pac", "ref": "session.PacProxyConfiguration" }, { "value": "system", "ref": "session.SystemProxyConfiguration" }] }, { "objectOnly": true });
const SessionAutodetectProxyConfiguration = (0, record_js_1.defineRecord)('session.AutodetectProxyConfiguration', [{ "name": "proxyType", "wire": "proxyType", "required": true, "type": { "const": "autodetect" } }], { "extensible": true });
const SessionDirectProxyConfiguration = (0, record_js_1.defineRecord)('session.DirectProxyConfiguration', [{ "name": "proxyType", "wire": "proxyType", "required": true, "type": { "const": "direct" } }], { "extensible": true });
const SessionManualProxyConfiguration = (0, record_js_1.defineRecord)('session.ManualProxyConfiguration', [{ "name": "proxyType", "wire": "proxyType", "required": true, "type": { "const": "manual" } }, { "name": "httpProxy", "wire": "httpProxy", "required": false, "type": { "primitive": "string" } }, { "name": "sslProxy", "wire": "sslProxy", "required": false, "type": { "primitive": "string" } }, { "name": "socksProxy", "wire": "socksProxy", "required": true, "type": { "primitive": "string" } }, { "name": "socksVersion", "wire": "socksVersion", "required": true, "type": { "primitive": "integer" } }, { "name": "noProxy", "wire": "noProxy", "required": false, "type": { "list": { "primitive": "string" } } }], { "extensible": true });
const SessionSocksProxyConfiguration = (0, record_js_1.defineRecord)('session.SocksProxyConfiguration', [{ "name": "socksProxy", "wire": "socksProxy", "required": true, "type": { "primitive": "string" } }, { "name": "socksVersion", "wire": "socksVersion", "required": true, "type": { "primitive": "integer" } }]);
const SessionPacProxyConfiguration = (0, record_js_1.defineRecord)('session.PacProxyConfiguration', [{ "name": "proxyType", "wire": "proxyType", "required": true, "type": { "const": "pac" } }, { "name": "proxyAutoconfigUrl", "wire": "proxyAutoconfigUrl", "required": true, "type": { "primitive": "string" } }], { "extensible": true });
const SessionSystemProxyConfiguration = (0, record_js_1.defineRecord)('session.SystemProxyConfiguration', [{ "name": "proxyType", "wire": "proxyType", "required": true, "type": { "const": "system" } }], { "extensible": true });
const SessionUserPromptHandler = (0, record_js_1.defineRecord)('session.UserPromptHandler', [{ "name": "alert", "wire": "alert", "required": false, "type": { "ref": "session.UserPromptHandlerType" } }, { "name": "beforeUnload", "wire": "beforeUnload", "required": false, "type": { "ref": "session.UserPromptHandlerType" } }, { "name": "confirm", "wire": "confirm", "required": false, "type": { "ref": "session.UserPromptHandlerType" } }, { "name": "default", "wire": "default", "required": false, "type": { "ref": "session.UserPromptHandlerType" } }, { "name": "file", "wire": "file", "required": false, "type": { "ref": "session.UserPromptHandlerType" } }, { "name": "prompt", "wire": "prompt", "required": false, "type": { "ref": "session.UserPromptHandlerType" } }]);
const SessionUserPromptHandlerTypeEnum = (0, enum_js_1.defineEnum)('session.UserPromptHandlerType', ["accept", "dismiss", "ignore"]);
(0, record_js_1.defineAlias)('session.Subscription', { "primitive": "string" });
const SessionSubscribeParameters = (0, record_js_1.defineRecord)('session.SubscribeParameters', [{ "name": "events", "wire": "events", "required": true, "type": { "list": { "primitive": "string" } } }, { "name": "contexts", "wire": "contexts", "required": false, "type": { "list": { "ref": "browsingContext.BrowsingContext" } } }, { "name": "userContexts", "wire": "userContexts", "required": false, "type": { "list": { "ref": "browser.UserContext" } } }]);
const SessionUnsubscribeByIdRequest = (0, record_js_1.defineRecord)('session.UnsubscribeByIDRequest', [{ "name": "subscriptions", "wire": "subscriptions", "required": true, "type": { "list": { "ref": "session.Subscription" } } }]);
const SessionUnsubscribeByAttributesRequest = (0, record_js_1.defineRecord)('session.UnsubscribeByAttributesRequest', [{ "name": "events", "wire": "events", "required": true, "type": { "list": { "primitive": "string" } } }]);
const SessionStatus = (0, record_js_1.defineRecord)('session.Status', [{ "name": "method", "wire": "method", "required": true, "type": { "const": "session.status" } }, { "name": "params", "wire": "params", "required": true, "type": { "ref": "EmptyParams" } }]);
const SessionStatusResult = (0, record_js_1.defineRecord)('session.StatusResult', [{ "name": "ready", "wire": "ready", "required": true, "type": { "primitive": "boolean" } }, { "name": "message", "wire": "message", "required": true, "type": { "primitive": "string" } }]);
const SessionNew = (0, record_js_1.defineRecord)('session.New', [{ "name": "method", "wire": "method", "required": true, "type": { "const": "session.new" } }, { "name": "params", "wire": "params", "required": true, "type": { "ref": "session.NewParameters" } }]);
const SessionNewParameters = (0, record_js_1.defineRecord)('session.NewParameters', [{ "name": "capabilities", "wire": "capabilities", "required": true, "type": { "ref": "session.CapabilitiesRequest" } }]);
const SessionNewResult = (0, record_js_1.defineRecord)('session.NewResult', [{ "name": "sessionId", "wire": "sessionId", "required": true, "type": { "primitive": "string" } }, { "name": "capabilities", "wire": "capabilities", "required": true, "type": { "ref": "session.CapabilityResponse" } }]);
const SessionEnd = (0, record_js_1.defineRecord)('session.End', [{ "name": "method", "wire": "method", "required": true, "type": { "const": "session.end" } }, { "name": "params", "wire": "params", "required": true, "type": { "ref": "EmptyParams" } }]);
(0, record_js_1.defineAlias)('session.EndResult', { "ref": "EmptyResult" });
const SessionSubscribe = (0, record_js_1.defineRecord)('session.Subscribe', [{ "name": "method", "wire": "method", "required": true, "type": { "const": "session.subscribe" } }, { "name": "params", "wire": "params", "required": true, "type": { "ref": "session.SubscribeParameters" } }]);
const SessionSubscribeResult = (0, record_js_1.defineRecord)('session.SubscribeResult', [{ "name": "subscription", "wire": "subscription", "required": true, "type": { "ref": "session.Subscription" } }]);
const SessionUnsubscribe = (0, record_js_1.defineRecord)('session.Unsubscribe', [{ "name": "method", "wire": "method", "required": true, "type": { "const": "session.unsubscribe" } }, { "name": "params", "wire": "params", "required": true, "type": { "ref": "session.UnsubscribeParameters" } }]);
const SessionUnsubscribeParametersUnion = (0, union_js_1.defineUnion)('session.UnsubscribeParameters', { "ordered": [{ "ref": "session.UnsubscribeByAttributesRequest", "requires": ["events"] }, { "ref": "session.UnsubscribeByIDRequest", "requires": ["subscriptions"] }] }, { "objectOnly": true });
(0, record_js_1.defineAlias)('session.UnsubscribeResult', { "ref": "EmptyResult" });
// --- Implementation ---
/**
* This is an unsupported API. No compatibility guarantees are provided.
* It tracks the W3C WebDriver BiDi specification directly. As the specification
* evolves, this API will change or be removed without prior notice.
*/
class Session extends domain_js_1.Domain {
static async create(driver) {
return new Session(await domain_js_1.Domain.connect(driver), domain_js_1.DOMAIN_TOKEN);
}
/**
* @returns {Promise<void>}
* @see https://w3c.github.io/webdriver-bidi/#command-session-end
*/
async end() {
await this.send('session.end', {});
}
/**
* @param {SessionNewParameters} params
* @param {SessionCapabilitiesRequest} params.capabilities
* @returns {Promise<SessionNewResult>}
* @see https://w3c.github.io/webdriver-bidi/#command-session-new
*/
async new(params) {
const validatedParams = new SessionNewParameters(params);
const result = await this.send('session.new', validatedParams);
return SessionNewResult.fromWire(result);
}
/**
* @returns {Promise<SessionStatusResult>}
* @see https://w3c.github.io/webdriver-bidi/#command-session-status
*/
async status() {
const result = await this.send('session.status', {});
return SessionStatusResult.fromWire(result);
}
/**
* @param {SessionSubscribeParameters} params
* @param {Array<string>} params.events
* @param {Array<BrowsingContextBrowsingContext>} [params.contexts]
* @param {Array<BrowserUserContext>} [params.userContexts]
* @returns {Promise<SessionSubscribeResult>}
* @see https://w3c.github.io/webdriver-bidi/#command-session-subscribe
*/
async subscribe(params) {
const validatedParams = new SessionSubscribeParameters(params);
const result = await this.send('session.subscribe', validatedParams);
return SessionSubscribeResult.fromWire(result);
}
/**
* @param {SessionUnsubscribeParameters} params
* @returns {Promise<void>}
* @see https://w3c.github.io/webdriver-bidi/#command-session-unsubscribe
*/
async unsubscribe(params) {
const validatedParams = SessionUnsubscribeParametersUnion.build(params);
await this.send('session.unsubscribe', validatedParams);
}
}
exports.Session = Session;
Session.UserPromptHandlerType = Object.freeze({ ACCEPT: "accept", DISMISS: "dismiss", IGNORE: "ignore" });