如何在Selenium Grid上使用实习生从崩溃/挂断中恢复

时间:2014-06-26 16:34:01

标签: unit-testing selenium selenium-grid intern

我在Selenium 2 Grid上运行我的实习单元测试。当所有测试正常执行时,这可以正常工作此外,测试中的运行时错误也得到了正确处理:测试报告为失败,其他测试继续执行。

其他一些类型的错误虽然没有得到妥善处理:

  • 伊斯坦布尔代码覆盖率代码检测到语法错误,并且内部运行器完成而不执行任何进一步的测试。节点上打开的浏览器窗口未关闭。
  • 依赖项错误(对不存在的文件的引用)会导致加载程序出错。浏览器窗口保持打开状态,实习生一直在等待。

由于我想在构建中集成测试执行,我更喜欢测试完成并释放其资源,即使出现错误。

我确实查看了以下来源,表明我应该设置正确的超时,但没有成功: https://code.google.com/p/selenium/wiki/Grid2
https://docs.saucelabs.com/reference/test-configuration/#timeouts

这是我的测试设置:

  • Node.js - 0.10.28
  • 实习生 - 1.7.0
  • Selenium 2 Server - 2.42.2
  • ChromeDriver - 2.10
  • Internet Explorer Webdriver - 2.42

我用以下方式启动集线器:

java -jar selenium-server-standalone-2.42.2.jar -role hub -timeout=20 -browserTimeout=60

我用:

启动一个节点
java -jar selenium-server-standalone-2.42.2.jar -role node -hub http://192.168.29.1:4444/grid/register -browser browserName=internetexplorer,version=10,maxInstances=1,platform=VISTA -browser browserName=chrome,version=35,maxInstances=3,platform=VISTA

然后我开始测试:

node node_modules\intern\bin\intern-runner.js config=picard\tests\intern

这是实习生配置文件的内容:

define({
    proxyPort: 9000,
    proxyUrl: 'http://192.168.29.1:9000/',

    capabilities: {
      'selenium-version': '2.42.2',
      'max-duration': 30
      //'idle-timeout': 30
    },

    environments: [
        { browserName: 'internetexplorer', version: '10', platform: 'VISTA' },
        { browserName: 'chrome', version: '35', platform: 'VISTA' }
    ],

    maxConcurrency: 3,
    useSauceConnect: false,

    webdriver: {
        host: 'localhost',
        port: 4444
    },

    useLoader: {
        'host-node': 'dojo/dojo',
        'host-browser': 'node_modules/dojo/dojo.js'
    },

    loader: {
      packages: [
        { name: 'cbtree', location: 'external/cbtree' },
        { name: 'dgrid', location: 'external/dgrid' },
        { name: 'put-selector', location: 'external/put-selector' },
        { name: 'xstyle', location: 'external/xstyle' }
      ]
    },

    suites: [
      'picard/tests/crashingtest,
      'picard/tests/passingtest
    ],

    functionalSuites: [ ],

    excludeInstrumentation: /^(node_modules|dojo|dojox|dijit|dgrid|xstyle|external)/
});

如何配置我的测试,以便即使发生错误,实习生完成执行并关闭浏览器窗口? 此致,约翰

1 个答案:

答案 0 :(得分:0)

在每次测试结束时,您都需要调用一个方法来为您处理selenium清理。这样,如果由于错误而导致失败,则仍应调用此方法,并将为您关闭浏览器。

应该处理清理的方法的通用名称是afterEach(function ())