下面的代码段在捕获文件夹中的屏幕快照时效果很好。对于每个“失败”的步骤,都需要在HTML报告器中将屏幕快照“附加”到我面前,这是一个问题。
After(async function(scenario) {
try{
if (SCREENSHOT === 'Y') {
let featurePathArr = []
if (process.platform === isWindows) {
featurePathArr = scenario.sourceLocation.uri.split('\\');
} else if (process.platform === isMac) {
featurePathArr = scenario.sourceLocation.uri.split('\/');
}
const featurePath = featurePathArr[2];
const featureName = featurePathArr[3].replace('.feature', '');
if (scenario.result.status === Status.FAILED) {
if (((await this.browser.pages()).length) > 2){
await this.tab.screenshot({
path: 'screenshots/' + featurePath + '/' + featureName + '/' + `${ccUtils.dateTimeStamp()}` + '_tab.png',
type: 'png'
});
} else {
await this.page.screenshot({
path: 'screenshots/' + featurePath + '/' + featureName + '/' + `${ccUtils.dateTimeStamp()}` + '_page.png',
type: 'png'
});
}
}
}
} catch (err) {
console.log(err);
}
return await this.closeBrowser();
});
nodejs中有一个称为Buffer的概念,请在此处使用。检查以下代码:
if (!(scenario.result.status === 'failed')) return;
try {
const data3 = await driver.takeScreenshot();
const image3 = Buffer.from(data3, 'base64');
await this.World.attach(image3, 'image/png');
} catch (e) {
console.log(e.message);
}