diff --git a/lib/webdriver.js b/lib/webdriver.js index 3428bb14..766ff7d1 100644 --- a/lib/webdriver.js +++ b/lib/webdriver.js @@ -12,11 +12,12 @@ module.exports.buildDriver = wd => { async function initDriver(options = {}) { client = await WebDriver.newSession(options); + driver.browserName = options.browserName; return driver; } async function saveScreenshots(context) { - const reportspath = path.join(process.cwd(), 'report'); + const reportspath = path.join(process.cwd(), 'reports'); const base64 = await client.takeScreenshot(); const img = new Buffer(base64, 'base64'); const filepath = path.join(reportspath, 'screenshots', `${Date.now()}.png`); @@ -38,7 +39,39 @@ module.exports.buildDriver = wd => { } async function get(url) { - return await client.navigateTo(url); + await client.navigateTo(url); + } + + async function getUrl() { + return await client.getUrl(); + } + + async function getElementAttribute(element, value) { + return await client.getElementAttribute(Object.values(element)[0], value); + } + + async function elementClick(element) { + await client.elementClick(Object.values(element)[0]); + } + + async function elementSendKeys(element, value) { + if (driver.browserName === 'chrome') { + await client.elementSendKeys(Object.values(element)[0], value); + } else { + await client.elementSendKeys(Object.values(element)[0], value[0]); + } + } + + async function elementByXPath(value) { + return await client.findElements('xpath', value); + } + + async function maximizeWindow() { + try { + await client.maximizeWindow(); + } catch (error) { + console.log(error); + } } const { addPromiseChainMethod } = wd; @@ -48,6 +81,12 @@ module.exports.buildDriver = wd => { addPromiseChainMethod('quit', quit); addPromiseChainMethod('initWindow', initWindow); addPromiseChainMethod('get', get); + addPromiseChainMethod('getUrl', getUrl); + addPromiseChainMethod('elementClick', elementClick); + addPromiseChainMethod('elementSendKeys', elementSendKeys); + addPromiseChainMethod('elementByXPath', elementByXPath); + addPromiseChainMethod('maximizeWindow', maximizeWindow); + addPromiseChainMethod('getElementAttribute', getElementAttribute); return driver; }; \ No newline at end of file