Selenium +节点同时运行多个测试

时间:2015-08-28 18:51:56

标签: javascript node.js selenium selenium-webdriver automated-tests

情况:

  • 我已经设置了4台具有不同版本的Microsoft Internet Explorer的计算机,并将它们连接到selenium网格(集线器)。

  • 我可以在节点中使用selenium-webdriver,并将测试针对不同的浏览器/机器组合。

  • Selenium网格没有任何问题。

然而,当我多次调用我的Getscreen()函数时,一切都很好,直到其中一个测试服务器出现问题(如超时)。

捕获错误 Client.controlFlow().on('uncaughtException', function(e) {... 在功能中。

但奇怪的是,这个监听器并没有被完成它运行的功能所破坏。因此,如果我已经调用该函数50次并且测试51失败,则会收到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();
}

0 个答案:

没有答案