在黄瓜HTML记者中捕获屏幕截图

问题描述 投票:0回答:1

下面的代码段在捕获文件夹中的屏幕快照时效果很好。对于每个“失败”的步骤,都需要在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();
});
javascript node.js cucumber cucumberjs
1个回答
0
投票

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);
    }
© www.soinside.com 2019 - 2024. All rights reserved.