繁体   English   中英

如何在量角器多功能测试中使用不同的参数?

[英]How can I use different params in protractor multiplecapabilities test?

我正在尝试运行多种功能测试,并且每个浏览器都使用不同的登录名,但出现此错误:

失败:无法读取未定义的属性“用户名”

规格文件:

loginPage.pegarInput('username',browser.params[0].username),
loginPage.pegarInput('password',browser.params[0].password)`

CONFIG.JS 文件:

multiCapabilities: [{

    browserName: 'chrome',
      params: {
        username:'username',
        password:'password'
      },
    chromeOptions: {
      args: [ "--headless", "--disable-gpu","--no-sandbox"]
     }
    },

    {
      browserName: 'safari',
        params: {
          username:'username',
          password:'password'
        }
      }],

我可能会采用这种方法,但有不同的方法可以实现您想要的。 这种方法在配置中有一个带有所有凭据的 params 对象。 然后在 onPrepare 中,它找出正在运行的浏览器(为每个功能运行一个单独的 onPrepare)并将该 browserName 保存为全局变量。 要使用登录凭据,您可以使用方括号表示法使用新的全局变量访问特定的浏览器名称。

exports.config = {
    params: {
        chrome: {
           username: 'chromeUsername',
           password: 'chromePassword'
        },
        firefox: {
           username: 'firefoxUsername',
           password: 'firefoxPassword'
        }
    },
    multiCapabilities:{
      ...
    },
    onPrepare: async () => {
       const capabilities = await browser.getCapabilities();
       global.currentBrowser = capabilities.map_.get('browserName');

    }
    ...
}

用法

loginPage.pegarInput('username',browser.params[currentBrowser].username)

您可以尝试browser.getProcessedConfig()如下:

return browser.getProcessedConfig().then(function(config) {
  // config.capabilities is the CURRENT capability being run, if
  // you are using multiCapabilities.
  console.log('Executing capability', config.capabilities);
  loginPage.pegarInput('username', config.params.username)
});

// when use await/async
config = await browser.getProcessedConfig()
loginPage.pegarInput('username', config.params.username)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM