web2driver
Version:
Pure-JS, browser-based WebDriver (+ Appium) client
85 lines • 6.44 kB
JavaScript
;
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