angularjs - 使用 multiCapabilites 时的多个 onPrepare 或动态登录参数

标签 angularjs unit-testing selenium protractor

基本上与此相同:https://stackoverflow.com/questions/25163674/can-you-do-multiple-onprepares-per-browser-instance但由于没有答案或评论,我会再次发布。

我想在两个不同的浏览器上使用两个用户配置文件登录。

我会在我的配置文件中使用类似的东西:

multiCapabilities: [{
    browserName: 'chrome',
    specs: ['profile_1.spec.js'],
    login: {email: 'profile_1',
    password: 'pw1'}
}, {
    browserName: 'chrome',
    specs: ['profile_2.spec.js'],
    login: { email: 'profile_2',
    password: 'pw2'}
}]

由于我的登录页面不是 Angular 的,我需要使用 onPrepare 并且我只能设置登录参数一次。

有没有办法将登录参数从 multiCapativity 数组传递到 onPrepare 函数,或者在 multiCapability 对象中包含特定的 onPrepares?

最佳答案

您可以通过在代码中添加逻辑来解决此问题。

在 Protractor 1.7 中,您可以调用 browser.getProcessedConfig(),它会返回您的配置。

您可以将任意字段添加到您的 browserName 中。

multiCapabilities: [{
    browserName: 'chrome',
    specs: ['profile_1.spec.js'],
    name: 'profile1'
}, {
    browserName: 'chrome',
    specs: ['profile_2.spec.js'],
    name: 'profile2'
}]

并使用参数:

params: {
    profile1: {
        email: 'CA',
        password: 'pw123'
    },
    profile2: {
        email: 'Sup',
        password: 'pw123'
    }
},

然后准备:

onPrepare: function() {
    browser.getProcessedConfig().then(function(config) {
      //do something with browser.params[config.capabilities.name]
    });
},

关于angularjs - 使用 multiCapabilites 时的多个 onPrepare 或动态登录参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28456121/

相关文章:

javascript - 指令中的 Angular Controller 导致严格的 di 错误

angularjs - 如何在angularjs中使用openweathermap api获取多个城市的数据?

unit-testing - 如何使用结构/接口(interface)来模拟依赖项以进行测试

reactjs - 开 Jest : Cannot find module 'react' , 和其他 node_modules

ruby - 是否可以使用机器人打开浏览器,手动操作页面,然后继续使用机器人?

javascript - AngularJS 自定义日期选择器指令

javascript - 在覆盖的函数中获取正确的 this-context

c# - 无法使用 Moq 框架验证在 Select() 内部调用的方法

java - 在 Java + Selenium WebDriver 中提取选择的选项

python - 最初在 python 中创建 chromedriver 时,http.client.BadStatusLine : '' is thrown