123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- const http = require("http");
- const url = require("url");
- /**
- * Super dumb and simple WebDriver client. Works with selenium standalone, may or may not work yet
- * directly with other drivers.
- */
- class SimpleWebDriverClient {
- constructor(seleniumAddress) {
- this.seleniumAddress = seleniumAddress;
- }
- /**
- * Send an execute script command.
- *
- * @param sessionId
- * @param data A JSON blob with the script and arguments to execute.
- */
- execute(sessionId, data) {
- const url = ['session', sessionId, 'execute'].join('/');
- return this.createSeleniumRequest('POST', url, data);
- }
- /**
- * Send an execute async script command.
- *
- * @param sessionId
- * @param data A JSON blob with the script and arguments to execute.
- */
- executeAsync(sessionId, data) {
- const url = ['session', sessionId, 'execute_async'].join('/');
- return this.createSeleniumRequest('POST', url, data);
- }
- /**
- * Get the location of an element.
- *
- * @param sessionId
- * @param elementId
- * @returns Promise<{}> A promise that resolves with the x and y coordinates of the element.
- */
- getLocation(sessionId, elementId) {
- const url = ['session', sessionId, 'element', elementId, 'location'].join('/');
- return this.createSeleniumRequest('GET', url);
- }
- /**
- * Get the size of an element.
- *
- * @param sessionId
- * @param elementId
- * @returns Promise<{}> A promise that resolves with the height and width of the element.
- */
- getSize(sessionId, elementId) {
- const url = ['session', sessionId, 'element', elementId, 'size'].join('/');
- return this.createSeleniumRequest('GET', url);
- }
- createSeleniumRequest(method, messageUrl, data) {
- let parsedUrl = url.parse(this.seleniumAddress);
- let options = {};
- options['method'] = method;
- options['path'] = parsedUrl.path + '/' + messageUrl;
- options['hostname'] = parsedUrl.hostname;
- options['port'] = parseInt(parsedUrl.port);
- let request = http.request(options);
- return new Promise((resolve, reject) => {
- if (data) {
- request.write(data);
- }
- request.end();
- request.on('response', (resp) => {
- let respData = '';
- resp.on('data', (d) => {
- respData += d;
- });
- resp.on('error', (err) => {
- reject(err);
- });
- resp.on('end', () => {
- let response = JSON.parse(respData);
- // Selenium 3.5.x or greater
- if (response.status && response.status > 0) {
- console.error(`Got status ${response.status} from selenium`, response.value);
- reject(JSON.stringify(response.value));
- }
- // Selenium 3.0.x
- if (response.state && response.state !== 'success') {
- console.error(`Got response ${response.state} from selenium`, response.value);
- reject(JSON.stringify(response.value));
- }
- resolve(response.value);
- });
- });
- });
- }
- ;
- }
- exports.SimpleWebDriverClient = SimpleWebDriverClient;
- //# sourceMappingURL=simple_webdriver_client.js.map
|