当前位置: 首页 > 知识库问答 >
问题:

在具有量角器配置的Allure中为多个浏览器拍摄屏幕截图

双恩
2023-03-14
var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');
require('protractor/built/logger').Logger.logLevel = 3;
exports.config = {
    troubleshoot: true, // for protractor
    allScriptsTimeout: 1200000,
    specs: [
        './e2e/tests/**/0030*.e2e-spec.ts',
    ],

    multiCapabilities:[
    {
            'browserName' : 'chrome',
            'chromeOptions': { 'args' : ['--disable-extensions']},
            'shardTestFiles': true,
            'maxInstances': 1,
            'unexpectedAlertBehaviour' : 'dismiss'
        },
        {
            'browserName': 'internet explorer',
            'se:ieOptions': {

                enablePersistentHover: true,
                'ie.ensureCleanSession': true,
            }
        }
        ],

      jvmArgs: ['-Dwebdriver.ie.driver=./node_modules/webdriver-manager/selenium/IEDriverServer3.141.0.exe'],


    baseUrl: 'http://localhost:4200/',
    framework: 'jasmine',
    jasmineNodeOpts: {
        isVerbose: true,
        showColors: true,
        defaultTimeoutInterval: 1200000
    },
    useAllAngular2AppRoots: true,
    beforeLaunch: function() {
    }

    onPrepare: function() {
    browser.manage().window().maximize();
    require('ts-node').register({
        project: 'e2e/tsconfig.json'
    });

    jasmine.getEnv().addReporter(reporter);

    var AllureReporter = require('jasmine-allure-reporter');

    capsPromise.then(function(caps) {
        console.log(caps);
        var browserName = caps.get('browserName');
        var browserVersion = caps.get('version');
        const prePendStr = browserName + "-" + browserVersion + "-";
        console.log(prePendStr);
    });

    jasmine.getEnv().addReporter(new AllureReporter({
        resultsDir: 'allure-results'
    }));
    jasmine.getEnv().addReporter(reporter);

    jasmine.getEnv().afterEach(function (done) {
            browser.takeScreenshot().then(function (png) {
                allure.createAttachment('Screenshot', function () {
                    return new Buffer(png, 'base64')
                },'image/png')();
                done();
            })
    });

    jasmine.getEnv().addReporter(new Jasmine2HtmlReporter({
        //savePath: './test/jasmine-nowshin/'
    }));
  }
};

测试中更新的代码

    let capsPromise = browser.getCapabilities();
let browserNameforSpec;
capsPromise.then(function(caps) {
    console.log(caps);
    let browserName = caps.get('browserName');
    let browserVersion = caps.get('version');
    browserNameforSpec = browserName + '-' + browserVersion + '-';
    console.log(browserNameforSpec);

});

describe( '0030 Test for login' + browserNameforSpec, function () { // this.browserNameforSpec value is undefined

    // 1.
    it('Navigate to the login page', async () => {
        await navigate.to.the(loginPage);
    });

    // 2
    it('Click onto language button', async() => {
        await click.onto(languageButton);
        await expect(languageDropdown.isDisplayed());
    });

    // 3
    it('English Language is selected', async() => {    
        await click.onto(englishLanguage);
        await expect(languageButton.getText()).toBe('English');
    });

    // 4.
    it('Correct user name is written into email field', async() => {
        await usernameField.click();
        await enter(correctUsername, into(usernameField));    
    });

    // 5.
    it('Correct password is written into password field', async() => {
            await passwordField.click().then(function () {
                passwordField.clear();
                enter(correctPassword, into(passwordField));
            })    
    });

    // 6.
    it('Login button is clicked and home page is opened', async() => {
        await click.onto(loginButton);
    });    
});

共有1个答案

蒋华美
2023-03-14

目前allure不支持多浏览器报告。

如果测试名为“abc”,它将创建2个同名的报告并堆叠它们,但在测试结束时,您只能看到1个。您可以在“历史记录”或“重试”选项卡中看到这一点。

您可以为jasmine事件创建自定义侦听器,在测试开始时添加浏览器名称或其他东西,为每个测试创建不同的名称,以便区分它们。

browser.getCapabilities().then((cap) => {
    browser.params.browserName = cap.get('browserName');
});
 类似资料:
  • 问题内容: 使用Google的“报告错误”或“反馈工具”,您可以选择浏览器窗口的区域来创建屏幕截图,并在屏幕上提交有关错误的反馈。 他们是如何做到的?Google的JavaScript反馈API已从此处加载,它们对反馈模块的概述将演示屏幕截图功能。 问题答案: JavaScript可以读取DOM并使用来相当准确地表示该DOM 。我一直在研究将HTML转换为画布图像的脚本。今天决定将其实现为发送您所

  • 可以使用SeleniumWebDriver拍摄屏幕截图。 它会截取网页的整个区域,但浏览器窗口(boarder)不包括在此截图中。 有没有一种方法来采取与Selenium网络驱动程序截图,以便整个浏览器窗口被捕获? 我想看到所有的状态栏,选项卡和按钮。 这是可能的。NET,但它有可能会屏蔽其他内容(例如,浏览器被最小化),所以我想使用selenium。

  • 我需要使用Sikuli的自动化,但我无法采取截图。问题是,当我点击“截屏”或“创建区域”时,IDE会被隐藏,但选择区域选项不会出现....

  • 我目前正在尝试实现Ashot来为我当前的项目截图,它正在为桌面工作。 但我想知道如何在iOS和Android设备上实现它,互联网上没有太多信息。 我使用了以下视口,它正在为iPad截图: 屏幕截图FullPage=new AShot()。拍摄策略(ShootingStrategies.viewportRetina(100,0,0,2))。截图(司机); 但是我想知道如何使用给定的属性来为其他IOS

  • 问题内容: 我想获得活动的“全页”屏幕截图。该视图包含一个RecyclerView,其中包含许多项。 我可以使用此功能拍摄当前视图的屏幕截图: 但是它仅包含我可以正常查看的项目(符合预期)。 截屏时,有什么方法可以使RecyclerView神奇地完整显示(一次显示所有项目)? 如果没有,我应该如何解决这个问题? 问题答案: 这是我的解决方案,当 所有项目的尺寸都相同 并且 只有一种类型的项目时 。

  • 我有一个通过TestNG运行并行测试的selenium项目。当测试失败时,我有一个listener类来捕获屏幕截图。类如下 在我的测试中,我有一个AfterMethod来清理测试 如果逐个运行测试,则捕获正确的浏览器屏幕截图,但如果运行parrallel,testsit捕获错误的测试浏览器。我认为问题可能是以下之一 after方法已经退出浏览器(有时这是一种情况,因此我必须添加hasQuit布尔值