情况:
我已经设置了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();
}