【问题标题】:How to enable JavaScript Protractor Firefox headless如何启用 JavaScript Protractor Firefox 无头
【发布时间】:2020-01-13 09:00:25
【问题描述】:

我们在无头模式下使用 Protractor 进行 e2e 测试。

我们要先测试身份验证。 行为如上:

1/ 用户点击浏览器上的链接 2/ 服务器将检查此用户是否通过身份验证 2.1 如果用户通过认证,会出现首页 2.2 如果没有,用户将被重定向到sso登录页面

这里的问题是,javascript 不会被执行。我尝试添加一些标志,但没有任何区别。

exports.config = {
    allScriptsTimeout: 20000,

    specs: [
        './e2e/account/**/account.spec.ts',
    ],

    capabilities: {
        'browserName': 'firefox',
        'marionette': true,  
        'moz:firefoxOptions': {
          args: [ "--headless"],
          firefox_binary: '/opt/firefox/firefox',
          binary_: '/opt/firefox/firefox',
         },
        acceptInsecureCerts: true,
        javascriptEnabled: true,
   },

    directConnect: true,

    baseUrl: 'http://demop-staging-ppd.com/',
    framework: 'mocha',

    // SELENIUM_PROMISE_MANAGER: false,

    mochaOpts: {
        reporter: 'spec',
        slow: 3000,
        ui: 'bdd',
        timeout: 720000
    },

    beforeLaunch: function() {
        require('ts-node').register({
            project: 'tsconfig.e2e.json'
        });
    },

    onPrepare: function() {
        browser.driver.manage().window().setSize(1280, 1024);
        // Disable animations
        // @ts-ignore
        browser.executeScript('document.body.className += " notransition";');
        const chai = require('chai');
        const chaiAsPromised = require('chai-as-promised');
        chai.use(chaiAsPromised);
        const chaiString = require('chai-string');
        chai.use(chaiString);
        // @ts-ignore
        global.chai = chai;
    },

    useAllAngular2AppRoots: true
};

规范文件:

  before(async () => {
    await browser.waitForAngularEnabled(false);    
  });

  it('should content display content ', async () => {
    await browser.get('/');
    browser.sleep(5000);
    const content= await browser.getPageSource();
console.log(content)

  });

我愿意接受任何建议,并可以为您提供任何其他信息。

[更新]

我如上所述更改我的配置文件以尝试在我的浏览器上启用 javascript。它适用于本地,但是当我在 docker image 上尝试时却没有

capabilities: {
        'browserName': 'firefox',
        'marionette': true,
        'moz:firefoxOptions': {
            args: ["--headless"],
            firefox_binary: '/opt/firefox/firefox',
            binary_: '/opt/firefox/firefox',
            "prefs": {
                "javascript.options.showInConsole": true,
                "javascript.enabled": true
            },
            "log": { "level": "trace" }
        },
        acceptInsecureCerts: true,
        acceptSslCerts: true,

      },

【问题讨论】:

    标签: javascript firefox protractor e2e-testing


    【解决方案1】:
    multiCapabilities: [ { browserName: 'firefox', firefoxOptions: { args: ['--headless'] }, 'moz:firefoxOptions': { args: [ '--headless' ] } } ]
    

    请检查一下

    使用webdriver-manager 执行。使用directConnect,您将出现权限被拒绝错误。

    我也检查了 linux PC。这很好用

    【讨论】:

    • 我尝试了多功能脚本,但它不起作用。我想知道,为什么 directConnect 会导致权限被拒绝。我没有出现这个错误。
    • 尝试在您的参数中添加 '--disable-gpu', '--window-size=1000x1000'
    • 我在 windows 中使用了准确的配置。让我在 Linux PC 上尝试并更新您。
    猜你喜欢
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 2015-12-05
    • 2021-08-09
    • 2015-06-02
    • 1970-01-01
    • 2017-10-22
    相关资源
    最近更新 更多