projecte_ionic/node_modules/webdriver-js-extender/built/lib/extender.js
2022-02-09 18:30:03 +01:00

71 lines
2.8 KiB
JavaScript
Executable file

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
let Command = require('selenium-webdriver/lib/command').Command;
class Extender {
constructor(driver) {
this.driver_ = driver;
this.params_ = {};
this.executor_ =
driver.getExecutor ? driver.getExecutor() : driver.executor_;
}
/**
* Defines a new command. When a command is sent, the {@code path} will be
* preprocessed using the command's parameters; any path segments prefixed
* with ":" will be replaced by the parameter of the same name. For example,
* given "/person/:name" and the parameters "{name: 'Bob'}", the final command
* path will be "/person/Bob".
*
* @param {string} name The command name.
* @param {string} params The names of the parameters to the command
* @param {string} method The HTTP method to use when sending this command.
* @param {string} path The path to send the command to, relative to
* the WebDriver server's command root and of the form
* "/path/:variable/segment".
*/
defineCommand(name, params, method, path) {
this.executor_.defineCommand(name, method, path);
this.params_[method + ':' + name] = params;
}
/**
* Executes a command which was defined by defineCommand()
*
* @param {string} name The command name.
* @param {*[]} params The parameters to the command
* @return {webdriver.promise.Promise<*>} A promise that will be resolved with
* the command result
*/
execCommand(name, method, params) {
var paramNames = this.params_[method + ':' + name];
if (paramNames === undefined) {
throw new RangeError('The command "' + name + '" has not yet been defined');
}
if (paramNames.length !== params.length) {
throw new RangeError('The command "' + name + '" expected ' + paramNames.length + ' parameters, got ' +
params.length);
}
var command = new Command(name);
for (var i = 0; i < params.length; i++) {
if (params[i] !== undefined) {
command.setParameter(paramNames[i], params[i]);
}
}
return this.driver_.schedule(command, 'Custom Command: ' + name + '(' +
params
.map((x) => {
if ((typeof x == 'number') || (typeof x == 'boolean') ||
(typeof x == 'function')) {
return x.toString();
}
else if (x == null) {
return '' + x;
}
else {
return JSON.stringify(x);
}
})
.join(', ') +
')');
}
}
exports.Extender = Extender;
//# sourceMappingURL=extender.js.map