Javascript 硒+;同时运行多个测试的节点

Javascript 硒+;同时运行多个测试的节点,javascript,node.js,selenium,selenium-webdriver,automated-tests,Javascript,Node.js,Selenium,Selenium Webdriver,Automated Tests,情况: 我用不同版本的Microsoft Internet Explorer安装了4台计算机,并将它们连接到selenium网格(集线器) 我可以在节点中使用SeleniumWebDriver,并针对不同的浏览器/机器组合进行测试 Selenium网格执行起来没有任何问题 但是,当我多次调用Getscreen()函数时,一切正常,直到其中一个测试服务器出现问题(如超时) 错误被捕获为 Client.controlFlow().on('uncaughtException',函数(e){… 在函

情况:

  • 我用不同版本的Microsoft Internet Explorer安装了4台计算机,并将它们连接到selenium网格(集线器)

  • 我可以在节点中使用SeleniumWebDriver,并针对不同的浏览器/机器组合进行测试

  • Selenium网格执行起来没有任何问题

但是,当我多次调用Getscreen()函数时,一切正常,直到其中一个测试服务器出现问题(如超时)

错误被捕获为
Client.controlFlow().on('uncaughtException',函数(e){…
在函数中

但奇怪的是,这个监听器并没有在函数完成运行时被破坏。所以,如果我已经调用函数50次,而test51失败,我会得到51条错误消息

我的节点代码如下所示:

var fs = require('fs');
var webdriver = require('selenium-webdriver');
var HubIP = '192.168.1.201';

var Resolutions = [{
    width: 1920,
    height: 1080
}, //0
{
    width: 1680,
    height: 1050
}, //1
{
    width: 1600,
    height: 900
}, //2
...
];

function writeScreenshot(data, name) {
  name = name || 'ss.png';
  var screenshotPath = '../tests/';
  fs.writeFileSync(screenshotPath + name, data, 'base64');
};


function Getcreen(urltoget,resolutionN,WaitN,browsernameN,TableRowID)
{
    var xCapabilities = {};

    if (browsernameN=="ie8") { xCapabilities = { browserName: 'internet explorer', version: '8', platform: 'WINDOWS' }; }
    if (browsernameN=="ie9") { xCapabilities = { browserName: 'internet explorer', version: '9', platform: 'WINDOWS' }; }
    if (browsernameN=="ie10") { xCapabilities = { browserName: 'internet explorer', version: '10', platform: 'WINDOWS' }; }
    if (browsernameN=="ie11") { xCapabilities = { browserName: 'internet explorer', version: '11', platform: 'WINDOWS' }; }
    if (browsernameN=="chrome") { xCapabilities = { browserName: 'chrome',  platform: 'WINDOWS' }; }
    if (browsernameN=="firefox") { xCapabilities = { browserName: 'firefox', platform: 'WINDOWS' }; }

    var Client = new webdriver.Builder().usingServer('http://'+HubIP+':4444/wd/hub').withCapabilities(xCapabilities).build();

    Client.controlFlow().on('uncaughtException', function(e) {
        console.error('**** ERROR ***** \n ' + e);
    });

    Client.manage().timeouts().pageLoadTimeout(parseInt(WaitN,10));
    Client.manage().timeouts().setScriptTimeout(10000);
    Client.manage().window().setSize(Resolutions[parseInt(resolutionN,10)].width,Resolutions[parseInt(resolutionN,10)].height);

    Client.get(urltoget).then(function() {
        Client.getTitle().then(function(title) { console.log(browsernameN+": " + title); });
        Client.takeScreenshot().then(function(data) {
        writeScreenshot(data, TableRowID + '-'+browsernameN+'.png');
    });
    Client.quit();
}