123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- // 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.
- /**
- * @fileoverview Contains several classes for handling commands.
- */
- 'use strict';
- /**
- * Describes a command to execute.
- * @final
- */
- class Command {
- /** @param {string} name The name of this command. */
- constructor(name) {
- /** @private {string} */
- this.name_ = name;
- /** @private {!Object<*>} */
- this.parameters_ = {};
- }
- /** @return {string} This command's name. */
- getName() {
- return this.name_;
- }
- /**
- * Sets a parameter to send with this command.
- * @param {string} name The parameter name.
- * @param {*} value The parameter value.
- * @return {!Command} A self reference.
- */
- setParameter(name, value) {
- this.parameters_[name] = value;
- return this;
- }
- /**
- * Sets the parameters for this command.
- * @param {!Object<*>} parameters The command parameters.
- * @return {!Command} A self reference.
- */
- setParameters(parameters) {
- this.parameters_ = parameters;
- return this;
- }
- /**
- * Returns a named command parameter.
- * @param {string} key The parameter key to look up.
- * @return {*} The parameter value, or undefined if it has not been set.
- */
- getParameter(key) {
- return this.parameters_[key];
- }
- /**
- * @return {!Object<*>} The parameters to send with this command.
- */
- getParameters() {
- return this.parameters_;
- }
- }
- /**
- * Enumeration of predefined names command names that all command processors
- * will support.
- * @enum {string}
- */
- // TODO: Delete obsolete command names.
- const Name = {
- GET_SERVER_STATUS: 'getStatus',
- NEW_SESSION: 'newSession',
- GET_SESSIONS: 'getSessions',
- DESCRIBE_SESSION: 'getSessionCapabilities',
- CLOSE: 'close',
- QUIT: 'quit',
- GET_CURRENT_URL: 'getCurrentUrl',
- GET: 'get',
- GO_BACK: 'goBack',
- GO_FORWARD: 'goForward',
- REFRESH: 'refresh',
- ADD_COOKIE: 'addCookie',
- GET_COOKIE: 'getCookie',
- GET_ALL_COOKIES: 'getCookies',
- DELETE_COOKIE: 'deleteCookie',
- DELETE_ALL_COOKIES: 'deleteAllCookies',
- GET_ACTIVE_ELEMENT: 'getActiveElement',
- FIND_ELEMENT: 'findElement',
- FIND_ELEMENTS: 'findElements',
- FIND_CHILD_ELEMENT: 'findChildElement',
- FIND_CHILD_ELEMENTS: 'findChildElements',
- CLEAR_ELEMENT: 'clearElement',
- CLICK_ELEMENT: 'clickElement',
- SEND_KEYS_TO_ELEMENT: 'sendKeysToElement',
- SUBMIT_ELEMENT: 'submitElement',
- GET_CURRENT_WINDOW_HANDLE: 'getCurrentWindowHandle',
- GET_WINDOW_HANDLES: 'getWindowHandles',
- GET_WINDOW_POSITION: 'getWindowPosition',
- SET_WINDOW_POSITION: 'setWindowPosition',
- GET_WINDOW_SIZE: 'getWindowSize',
- SET_WINDOW_SIZE: 'setWindowSize',
- MAXIMIZE_WINDOW: 'maximizeWindow',
- SWITCH_TO_WINDOW: 'switchToWindow',
- SWITCH_TO_FRAME: 'switchToFrame',
- GET_PAGE_SOURCE: 'getPageSource',
- GET_TITLE: 'getTitle',
- EXECUTE_SCRIPT: 'executeScript',
- EXECUTE_ASYNC_SCRIPT: 'executeAsyncScript',
- GET_ELEMENT_TEXT: 'getElementText',
- GET_ELEMENT_TAG_NAME: 'getElementTagName',
- IS_ELEMENT_SELECTED: 'isElementSelected',
- IS_ELEMENT_ENABLED: 'isElementEnabled',
- IS_ELEMENT_DISPLAYED: 'isElementDisplayed',
- GET_ELEMENT_LOCATION: 'getElementLocation',
- GET_ELEMENT_LOCATION_IN_VIEW: 'getElementLocationOnceScrolledIntoView',
- GET_ELEMENT_SIZE: 'getElementSize',
- GET_ELEMENT_ATTRIBUTE: 'getElementAttribute',
- GET_ELEMENT_VALUE_OF_CSS_PROPERTY: 'getElementValueOfCssProperty',
- ELEMENT_EQUALS: 'elementEquals',
- SCREENSHOT: 'screenshot',
- TAKE_ELEMENT_SCREENSHOT: 'takeElementScreenshot',
- IMPLICITLY_WAIT: 'implicitlyWait',
- SET_SCRIPT_TIMEOUT: 'setScriptTimeout',
- GET_TIMEOUT: 'getTimeout',
- SET_TIMEOUT: 'setTimeout',
- ACCEPT_ALERT: 'acceptAlert',
- DISMISS_ALERT: 'dismissAlert',
- GET_ALERT_TEXT: 'getAlertText',
- SET_ALERT_TEXT: 'setAlertValue',
- SET_ALERT_CREDENTIALS: 'setAlertCredentials',
- EXECUTE_SQL: 'executeSQL',
- GET_LOCATION: 'getLocation',
- SET_LOCATION: 'setLocation',
- GET_APP_CACHE: 'getAppCache',
- GET_APP_CACHE_STATUS: 'getStatus',
- CLEAR_APP_CACHE: 'clearAppCache',
- IS_BROWSER_ONLINE: 'isBrowserOnline',
- SET_BROWSER_ONLINE: 'setBrowserOnline',
- GET_LOCAL_STORAGE_ITEM: 'getLocalStorageItem',
- GET_LOCAL_STORAGE_KEYS: 'getLocalStorageKeys',
- SET_LOCAL_STORAGE_ITEM: 'setLocalStorageItem',
- REMOVE_LOCAL_STORAGE_ITEM: 'removeLocalStorageItem',
- CLEAR_LOCAL_STORAGE: 'clearLocalStorage',
- GET_LOCAL_STORAGE_SIZE: 'getLocalStorageSize',
- GET_SESSION_STORAGE_ITEM: 'getSessionStorageItem',
- GET_SESSION_STORAGE_KEYS: 'getSessionStorageKey',
- SET_SESSION_STORAGE_ITEM: 'setSessionStorageItem',
- REMOVE_SESSION_STORAGE_ITEM: 'removeSessionStorageItem',
- CLEAR_SESSION_STORAGE: 'clearSessionStorage',
- GET_SESSION_STORAGE_SIZE: 'getSessionStorageSize',
- SET_SCREEN_ORIENTATION: 'setScreenOrientation',
- GET_SCREEN_ORIENTATION: 'getScreenOrientation',
- // These belong to the Advanced user interactions - an element is
- // optional for these commands.
- CLICK: 'mouseClick',
- DOUBLE_CLICK: 'mouseDoubleClick',
- MOUSE_DOWN: 'mouseButtonDown',
- MOUSE_UP: 'mouseButtonUp',
- MOVE_TO: 'mouseMoveTo',
- SEND_KEYS_TO_ACTIVE_ELEMENT: 'sendKeysToActiveElement',
- // These belong to the Advanced Touch API
- TOUCH_SINGLE_TAP: 'touchSingleTap',
- TOUCH_DOWN: 'touchDown',
- TOUCH_UP: 'touchUp',
- TOUCH_MOVE: 'touchMove',
- TOUCH_SCROLL: 'touchScroll',
- TOUCH_DOUBLE_TAP: 'touchDoubleTap',
- TOUCH_LONG_PRESS: 'touchLongPress',
- TOUCH_FLICK: 'touchFlick',
- GET_AVAILABLE_LOG_TYPES: 'getAvailableLogTypes',
- GET_LOG: 'getLog',
- GET_SESSION_LOGS: 'getSessionLogs',
- // Non-standard commands used by the standalone Selenium server.
- UPLOAD_FILE: 'uploadFile'
- };
- /**
- * Handles the execution of WebDriver {@link Command commands}.
- * @interface
- */
- class Executor {
- /**
- * Executes the given {@code command}. If there is an error executing the
- * command, the provided callback will be invoked with the offending error.
- * Otherwise, the callback will be invoked with a null Error and non-null
- * response object.
- *
- * @param {!Command} command The command to execute.
- * @return {!Promise<?>} A promise that will be fulfilled with the command
- * result.
- */
- execute(command) {}
- }
- // PUBLIC API
- module.exports = {
- Command: Command,
- Name: Name,
- Executor: Executor
- };
|