webdriverio-automation
Version:
WebdriverIO-Automation android ios project
52 lines (39 loc) • 1.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = elementClick;
var _getElementTagName = _interopRequireDefault(require("./getElementTagName"));
var _executeScript = _interopRequireDefault(require("./executeScript"));
var _constants = require("../constants");
var _utils = require("../utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const SELECT_SCRIPT = 'return (function select (elem) { elem.selected = true }).apply(null, arguments)';
async function elementClick({
elementId
}) {
const page = this.getPageHandle();
const elementHandle = this.elementStore.get(elementId);
if (!elementHandle) {
throw (0, _utils.getStaleElementError)(elementId);
}
const tagName = await _getElementTagName.default.call(this, {
elementId
});
if (tagName === 'option') {
return _executeScript.default.call(this, {
script: SELECT_SCRIPT,
args: [{
[_constants.ELEMENT_KEY]: elementId
}]
});
}
return new Promise((resolve, reject) => {
const dialogHandler = () => resolve(null);
page.once('dialog', dialogHandler);
return elementHandle.click().then(() => {
page.removeListener('dialog', dialogHandler);
resolve(null);
}).catch(reject);
});
}