UNPKG

selenium-webdriver

Version:

The official WebDriver JavaScript bindings from the Selenium project

116 lines (115 loc) • 13.2 kB
"use strict"; // 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" });