Skip to content

Commit

Permalink
feat: 新增 webdriver api
Browse files Browse the repository at this point in the history
  • Loading branch information
Jodeee committed Jan 7, 2022
1 parent a954ca6 commit 9b8db9e
Showing 1 changed file with 41 additions and 2 deletions.
43 changes: 41 additions & 2 deletions lib/webdriver.js
Expand Up @@ -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`);
Expand All @@ -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;
Expand All @@ -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;
};

0 comments on commit 9b8db9e

Please sign in to comment.