使用 CodeceptJS/WebdriverIO 并行执行浏览器

Posted

技术标签:

【中文标题】使用 CodeceptJS/WebdriverIO 并行执行浏览器【英文标题】:Parallelize execution of browsers by using CodeceptJS/WebdriverIO 【发布时间】:2017-09-01 06:16:08 【问题描述】:

我在内部使用 WebDriverIO 的 javascript 中使用 Codeceptjs 进行自动化测试。使用上述框架,我已经实现了在 Sauce 上运行。

我已经通过使用所需的功能在酱实验室的不同浏览器中运行自动化测试用例但一次只能使用一个浏览器

请求帮助

    并行化所有测试文件在单一浏览器中运行 实验室。 在酱实验室的多个浏览器上并行运行测试。

如果有上述两种组合,那就太好了。

在WebDriverIO/CodeceptJS上实现以上两个需求我应该提供什么配置。

这是我将传递给酱汁实验室的配置。

---codecept.conf.js---

WebDriverIO: 
  url: "http://localhost:3000",
  browser: chrome,
  waitforTimeout: 60000,
  restart: false,
  logLevel: "silent",
  cssSelectorsEnabled: "true",
  timeouts: 
    script: 60000,
    "page load": 60000,
    implicit : 0
  ,
  "host": "ondemand.saucelabs.com",
  "port":80,
  "user":"<SAUCE_USER_NAME>",
  "key": "<SAUCE_ACCESS_KEY>”,
  desiredCapabilities :
    "chrome": 
      "browserName": "chrome",
      "name": "TEST_CHROME",
      "platform": "ANY",
      "version": "55.0"
    
  

这些是我正在使用的所需功能列表,并根据所选浏览器名称选择一项功能:


  "internet explorer": 
    "browserName": "internet explorer",
    "name": "TEST_IE",
    "platform": "Windows 7",
    "ignoreZoomSetting": true,
    "nativeEvents": false,
    "ignoreProtectedModeSettings": true,
    "version": "11"
  ,
  "chrome": 
    "browserName": "chrome",
    "name": "TEST_CHROME",
    "platform": "ANY",
    "version": "55.0"
  ,
  "firefox": 
    "browserName": "firefox",
    "name": "TEST_FIREFOX",
    "platform": "ANY",
    "version": "51.0"
  ,
  "safari": 
    "browserName": "safari",
    "name": "TEST_SAFARI",
    "platform": "OS X 10.11",
    "version": "10.0"
  ,
  "opera": 
    "browserName": "opera",
    "name": "TEST_OPERA",
    "platform": "Windows 7",
    "version": "ANY"
  ,
  "MicrosoftEdge": 
    "browserName": "MicrosoftEdge",
    "name": "TEST_IEEdge",
    "platform": "Windows 10",
    "version": "13"
  

【问题讨论】:

【参考方案1】:

我从未使用过 CodeceptJS。但是,由于它使用 Wdio,因此可以使用 ma​​xInstances 属性来配置并行运行的浏览器数量。

查看 Wdio 文档:http://webdriver.io/guide/testrunner/configurationfile.html

【讨论】:

我在这里尝试了一切。但是,我无法在本地计算机上并行启动多个浏览器。只是想知道WebdriverIO是否支持?在 saucelabs 或 Browserstack 上运行它们很好,因为它们实现了自己的 Selenium 网格。我们如何在本地实现这一目标?【参考方案2】:

手册:parallel execution

添加到您的 codecept.conf.js:

"multiple": 
  "internet explorer": 
    "browsers": ["internet explorer"]
  ,
  "chrome": 
    "browsers": ["chrome"]
  ,
  "firefox": 
    "browsers": ["firefox"]
  ,
  "safari": 
    "browsers": ["safari"]
  ,
  "opera": 
    "browsers": ["opera"]
  ,
  "MicrosoftEdge": 
    "browsers": ["MicrosoftEdge"]
  ,
  "parallel": 
    // Splits tests into chunks
    // for example: 2 chunks x 6 browsers = 12 threads
    "chunks": 2,
    // run all tests in each browser:
    "browsers": ["internet explorer", "chrome", "firefox", "safari", "opera", "MicrosoftEdge"]
  

选择性浏览器的多次调用:

codeceptjs run-multiple chrome opera "internet explorer" firefox // create threads (four in all) for each browser: chrome, opera, internet explorer and firefox.

在几个块中多次调用每个浏览器:

codeceptjs run-multiple parallel

【讨论】:

【参考方案3】:

以下是单次和多次运行的 codecept 配置

要在单个浏览器中执行 codeceptjs run 按照下面的配置测试将仅在 FF 上运行。

要执行多个浏览器测试运行codeceptjs run-multiple --all ,它将在 safari 和 chrome 上执行您的测试,因为以下配置适用于 safari 和 chrome。

  tests: '**/.funcspec.js',
  output: './output',
  helpers: 
    WebDriver: 
      url: '<YOUR URL>',
      browser: "firefox",
      show:true,
      desiredCapabilities: 
        'record_video': 'true',
         name: 'Single browser run',
      ,
      "user": "USERNAME",
      "key": "KEY"
    
  ,
  multiple: 
    smoke:
      browsers: [
        
          browser: 'Safari',
          desiredCapabilities: 
            version: "latest-1",
            platform: 'OS X 10.11',
            name: 'Safari Parallel run',
          
        ,
        
          browser: "Chrome",
          desiredCapabilities: 
            version: "latest-1",
            platform: 'Windows 10',
            name: 'Chrome Parallel run',

          
        ,
      ],
    ,
  ,
  include: 
    I: './steps_file.js'
  ,
  bootstrap: null,
  mocha: ,
  name: 'somename',
  plugins: 
    pauseOnFail: ,
    retryFailedStep: 
      enabled: true
    ,
    tryTo: 
      enabled: true
    ,
    screenshotOnFail: 
      enabled: true
    
  

【讨论】:

以上是关于使用 CodeceptJS/WebdriverIO 并行执行浏览器的主要内容,如果未能解决你的问题,请参考以下文章

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份