UNPKG

web2driver

Version:

Pure-JS, browser-based WebDriver (+ Appium) client

85 lines 6.44 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getElementFromResponse = exports.JWP_ELEMENT_KEY = exports.W3C_ELEMENT_KEY = exports.ELEMENT_CMDS = void 0; const lodash_1 = require("lodash"); const W3C_ELEMENT_KEY = 'element-6066-11e4-a52e-4f735466cecf'; exports.W3C_ELEMENT_KEY = W3C_ELEMENT_KEY; const JWP_ELEMENT_KEY = 'ELEMENT'; exports.JWP_ELEMENT_KEY = JWP_ELEMENT_KEY; class UIElement { constructor(elementKey, findRes, parent) { this.elementKey = elementKey; this.elementId = this[elementKey] = findRes[elementKey]; this.__is_w2d_element = true; this.parent = parent; this.session = parent.session || parent; } get executeObj() { return { [this.elementKey]: this.elementId }; } findElement(using, value) { return __awaiter(this, void 0, void 0, function* () { const res = yield this.session.cmd('findElementFromElement', this.elementId, using, value); return getElementFromResponse(res, this); }); } findElements(using, value) { return __awaiter(this, void 0, void 0, function* () { const ress = yield this.session.cmd('findElementsFromElement', this.elementId, using, value); return ress.map(res => getElementFromResponse(res, this)); }); } } exports.default = UIElement; function getElementFromResponse(res, parent) { let elementKey; if (res[W3C_ELEMENT_KEY]) { elementKey = W3C_ELEMENT_KEY; } else { elementKey = JWP_ELEMENT_KEY; } if (!res[elementKey]) { throw new Error(`Bad findElement response; did not have element key. ` + `Response was: ${JSON.stringify(res)}`); } return new UIElement(elementKey, res, parent); } exports.getElementFromResponse = getElementFromResponse; const ELEMENT_CMDS = { isElementSelected: "isSelected", isElementDisplayed: "isDisplayed", getElementAttribute: "getAttribute", getElementCSSValue: "getCSSValue", getElementText: "getText", getElementTagName: "getTagName", getElementLocation: "getLocation", getElementLocationInView: "getLocationInView", getElementProperty: "getProperty", getElementRect: "getRect", getElementSize: "getSize", getElementEnabled: "getEnabled", elementClick: "click", elementSubmit: "submit", elementClear: "clear", elementSendKeys: "sendKeys", takeElementScreenshot: "takeScreenshot", }; exports.ELEMENT_CMDS = ELEMENT_CMDS; for (const [protoCmd, newCmd] of (0, lodash_1.toPairs)(ELEMENT_CMDS)) { UIElement.prototype[newCmd] = function (...args) { return __awaiter(this, void 0, void 0, function* () { return yield this.session.cmd(protoCmd, this.elementId, ...args); }); }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLG1DQUFpQztBQUVqQyxNQUFNLGVBQWUsR0FBRyxxQ0FBcUMsQ0FBQTtBQXNFdEMsMENBQWU7QUFyRXRDLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQztBQXFFTSwwQ0FBZTtBQW5FdkQsTUFBcUIsU0FBUztJQUM1QixZQUFhLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTTtRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLEVBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBQyxDQUFDO0lBQzdDLENBQUM7SUFFSyxXQUFXLENBQUUsS0FBSyxFQUFFLEtBQUs7O1lBQzdCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDM0YsT0FBTyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0MsQ0FBQztLQUFBO0lBRUssWUFBWSxDQUFFLEtBQUssRUFBRSxLQUFLOztZQUM5QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzdGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVELENBQUM7S0FBQTtDQUNGO0FBdEJELDRCQXNCQztBQUdELFNBQVMsc0JBQXNCLENBQUUsR0FBRyxFQUFFLE1BQU07SUFDMUMsSUFBSSxVQUFVLENBQUM7SUFDZixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRztRQUN6QixVQUFVLEdBQUcsZUFBZSxDQUFDO0tBQzlCO1NBQU07UUFDTCxVQUFVLEdBQUcsZUFBZSxDQUFDO0tBQzlCO0lBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRDtZQUN0RCxpQkFBaUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDekQ7SUFFRCxPQUFPLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQTRCd0Qsd0RBQXNCO0FBMUIvRSxNQUFNLFlBQVksR0FBRztJQUNuQixpQkFBaUIsRUFBRSxZQUFZO0lBQy9CLGtCQUFrQixFQUFFLGFBQWE7SUFDakMsbUJBQW1CLEVBQUUsY0FBYztJQUNuQyxrQkFBa0IsRUFBRSxhQUFhO0lBQ2pDLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLGlCQUFpQixFQUFFLFlBQVk7SUFDL0Isa0JBQWtCLEVBQUUsYUFBYTtJQUNqQyx3QkFBd0IsRUFBRSxtQkFBbUI7SUFDN0Msa0JBQWtCLEVBQUUsYUFBYTtJQUNqQyxjQUFjLEVBQUUsU0FBUztJQUN6QixjQUFjLEVBQUUsU0FBUztJQUN6QixpQkFBaUIsRUFBRSxZQUFZO0lBQy9CLFlBQVksRUFBRSxPQUFPO0lBQ3JCLGFBQWEsRUFBRSxRQUFRO0lBQ3ZCLFlBQVksRUFBRSxPQUFPO0lBQ3JCLGVBQWUsRUFBRSxVQUFVO0lBQzNCLHFCQUFxQixFQUFFLGdCQUFnQjtDQUN4QyxDQUFDO0FBUU8sb0NBQVk7QUFOckIsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUEsZ0JBQU8sRUFBQyxZQUFZLENBQUMsRUFBRTtJQUN0RCxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQWdCLEdBQUcsSUFBSTs7WUFDbkQsT0FBTyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbkUsQ0FBQztLQUFBLENBQUE7Q0FDRiJ9