UNPKG

glance-webdriver

Version:
223 lines (205 loc) 6.04 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _seleniumWebdriver = require('selenium-webdriver'); var _seleniumWebdriver2 = _interopRequireDefault(_seleniumWebdriver); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var WebdriverAdapter = function () { function WebdriverAdapter(config) { _classCallCheck(this, WebdriverAdapter); this.config = config; this.driver = config.driver; } _createClass(WebdriverAdapter, [{ key: 'init', value: function init() {} }, { key: 'getUrl', value: function getUrl(address) { return this.driver.getCurrentUrl(); } }, { key: 'setUrl', value: function setUrl(address) { return this.driver.get(address); } }, { key: 'getTabs', value: function getTabs() { return this.driver.getAllWindowHandles(); } }, { key: 'getActiveTab', value: function getActiveTab() { return this.driver.getWindowHandle(); } }, { key: 'setActiveTab', value: function setActiveTab(id) { return this.driver.switchTo().window(id); } }, { key: 'closeTab', value: function closeTab(id) { var _this = this; if (id) { return this.driver.switchTab(id).then(function (result) { return _this.driver.close(); }); } else { return this.driver.close(); } } }, { key: 'type', value: function type(keys) { return this.driver.keys(keys.split('')); } }, { key: 'sendKeys', value: function sendKeys() { var _driver$actions; return (_driver$actions = this.driver.actions()).sendKeys.apply(_driver$actions, arguments).perform(); } }, { key: 'click', value: function click(element) { return element.click(); } }, { key: 'doubleClick', value: function doubleClick(element) { return element.doubleClick(); } }, { key: 'middleClick', value: function middleClick(element) {} }, { key: 'moveMouseTo', value: function moveMouseTo(element, xOffset, yOffset) { console.log('Move Mouse:', element); if (xOffset || yOffset) return this.driver.actions().mouseMove(element, { x: xOffset, y: yOffset }).perform();else return this.driver.actions().mouseMove(element).perform(); } }, { key: 'rightClick', value: function rightClick(element) {} }, { key: 'mouseDown', value: function mouseDown(button) { button = button || 0; return this.driver.buttonDown(button); } }, { key: 'mouseUp', value: function mouseUp(button) { button = button || 0; return this.driver.buttonUp(button); } }, { key: 'execute', value: function execute(func) { for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } return this.driver.executeScript.apply(this.driver, [func].concat(args)); } }, { key: 'executeAsync', value: function executeAsync(func) { for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } return this.driver.executeAsyncScript.apply(this.driver, [func].concat(args)); } }, { key: 'dragAndDrop', value: function dragAndDrop(elementSource, elementTarget, xOffset, yOffset) { return this.driver.dragAndDrop(elementSource, elementTarget); } }, { key: 'pause', value: function pause(delay) { return this.driver.sleep(delay); } }, { key: 'saveScreenshot', value: function saveScreenshot(filename) { return this.driver.takeScreenshot().then(function (data) { _fs2.default.writeFile(filename, data.replace(/^data:image\/png;base64,/, ''), 'base64', function (err) { if (err) throw err; }); }); } }, { key: 'end', value: function end() { return this.driver.quit(); } }, { key: 'find', value: function find(reference) { return this.element(reference); } }, { key: 'element', value: function element(reference) { // // Needs to check for xpath // return this.driver.findElement(_seleniumWebdriver.By.css(reference)); } }, { key: 'elements', value: function elements(reference) { return this.driver.findElements(_seleniumWebdriver.By.css(reference)); } }, { key: 'getValue', value: function getValue(element) { return element.getAttribute("value"); } }, { key: 'setValue', value: function setValue(element) { for (var _len3 = arguments.length, values = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { values[_key3 - 1] = arguments[_key3]; } return element.sendKeys.apply(element, values); } }, { key: 'getTitle', value: function getTitle() { return this.driver.getTitle(); } }, { key: 'log', value: function log(type) { return this.driver.log(type); } }, { key: 'setWindowSize', value: function setWindowSize(size) { return this.driver.windowHandleSize(size); } }, { key: 'getWindowSize', value: function getWindowSize() { return this.driver.windowHandleSize(); } }, { key: 'maximize', value: function maximize() { return this.driver.windowHandleMaximize(); } }, { key: 'scroll', value: function scroll(element) {} }]); return WebdriverAdapter; }(); exports.default = WebdriverAdapter;