0

我需要在多个浏览器上运行测试用例,同时使用 webdriverIO。尽管浏览了几篇关于 WDIO 的文章和文档,但我还是找不到可行的方法。

这是我的 wdio.conf.js。

exports.config = {
    baseUrl: 'http://127.0.0.1:8100/',
    path: '/wd/hub',
    specs: [
        './e2e/**/*-wdio.e2e-spec.ts'
    ],
    maxInstances: 10,
    // capabilities: [
    //   {
    //       browserName: 'Chrome',
    //   }, 
    //   {
    //       browserName: 'Firefox',
    //   }
    // ],
    capabilities: {
        myChromeBrowser: {
            desiredCapabilities: {
                browserName: 'Chrome',
            }
        },
        myFirefoxBrowser: {
            desiredCapabilities: {
                browserName: 'Firefox',
            }
        }
    },
    
    sync: true,
    waitforTimeout: 10000,
    services: ['selenium-standalone'],
    framework: 'jasmine',
    jasmineNodeOpts: {
        defaultTimeoutInterval: 50000,
        expectationResultHandler: function(passed, assertion) {  }
    },
    before: function () {
        require('ts-node/register');
        require('ts-node').register({
            project: 'e2e'
        });
    },
}

这些是我在 package.json 中使用的 devDependencies:

"devDependencies": {
   "ts-node": "^3.3.0",
   "wdio-appium-service": "^0.2.3",
   "wdio-firefox-profile-service": "^0.1.0",
   "wdio-jasmine-framework": "^0.3.2",
   "wdio-selenium-standalone-service": "0.0.9",
   "wdio-spec-reporter": "^0.1.2",
   "wdio-typescript-service": "0.0.3",
   "webdriverio": "^4.9.8"
}

如您所见,我都尝试过"capabilities": []"capabilities": {}但遵循官方文档,即使在那之后,也只能two instances of Chrome运行。我还尝试按照安装文档Firefox's安装插件/依赖项。

谁能指出,我错过了什么或配置错误?目前,谷歌浏览器启动了两个实例,测试用例在其上运行,而我希望测试用例分别在 chrome 和 firefox 中运行。

4

2 回答 2

1

此外,请检查您浏览器名称上的“Camel Casing”。因为你有Firefox而不是firefox- 你可能让它启动 Chrome 的第二个实例。

...
capabilities: [
{
    // maxInstances can get overwritten per capability. So if you have an in-house Selenium
    // grid with only 5 firefox instances available you can make sure that not more than
    // 5 instances get started at a time.
    maxInstances: 1,
    browserName: 'chrome'
},
{
    maxInstances: 1,
    browserName: 'firefox'
}
],
...
于 2017-11-29T18:20:44.113 回答
0

如果您想要多个浏览器测试,则需要运行具有不同环境变量的单个测试套件。您应该定义矩阵,例如;

matrix:
- _BROWSER: "firefox"
  _PLATFORM: "Linux"
  _VERSION: "26"
- _BROWSER: "firefox"
  _PLATFORM: "Windows_7"
  _VERSION: "26"
- _BROWSER: "chrome"
  _PLATFORM: "Windows_7"
  _VERSION: "31"

然后只需创建具有给定容量的 WebdriverJS 实例

var BROWSERNAME = (process.env._BROWSER || process.env.BROWSER || 'chrome').replace(/_/g,' ');
var BROWSERVERSION = process.env._VERSION || process.env.VERSION || '*';
var BROWSERPLATFORM = (process.env._PLATFORM || process.env.PLATFORM || 'Linux').replace(/_/g,' ');

var options = {
    desiredCapabilities: {


     browserName: BROWSERNAME,
        version: BROWSERVERSION,
        platform: BROWSERPLATFORM
    },
    // ...
};

client = webdriverjs.remote(options);

Travis 将自动启动三个不同的构建,并使用不同的浏览器并行运行您的测试。查看此示例项目以了解更多实施细节。

更多详情多浏览器测试

于 2018-06-27T13:23:36.553 回答