量角器测试随机失败并出现错误 "Failed: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:32572"
Protractor Test Randomly Failing with Error "Failed: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:32572"
我的 Protractor 测试随机失败并出现错误。 :
Failed: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:32572
at ClientRequest.<anonymous> (C:\jenkins\workspace\QA-E2E\automation\SeleniumFramework\node_modules\selenium-webdriver\http\index.js:238:15)
at ClientRequest.emit (events.js:223:5)
at Socket.socketErrorListener (_http_client.js:406:9)
at Socket.emit (events.js:223:5)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:81:21)
From: Task: WebDriver.navigate().to(data:text/html,<html></html>)
at Driver.schedule (C:\jenkins\workspace\QA-E2E\automation\SeleniumFramework\node_modules\selenium-webdriver\lib\webdriver.js:807:17)
at Navigation.to (C:\jenkins\workspace\QA-E2E\automation\SeleniumFramework\node_modules\selenium-webdriver\lib\webdriver.js:1133:25)
at Driver.get (C:\jenkins\workspace\QA-E2E\automation\SeleniumFramework\node_modules\selenium-webdriver\lib\webdriver.js:988:28)
at C:\jenkins\workspace\QA-E2E\automation\SeleniumFramework\node_modules\protractor\built\browser.js:675:32
at ManagedPromise.invokeCallback_ (C:\jenkins\workspace\QA-E2E\automation\SeleniumFramework\node_modules\selenium-webdriver\lib\promise.js:1376:14)
节点版本:v12.14.1,
npm 版本:6.13.4,
量角器版本:5.4.2,
webdriver-manager 版本:12.1.6
注意:我在测试中也使用了 async/await。
前段时间曾经有一个问题,当时这个错误是特定于某个 chromedriver,必须从 selenium 端解决。由于 chromedriver 80 是一个全新的版本,我认为这只是一个临时错误,很快就会修复
同时,你可以试试我用过一段时间的方案。您所需要的只是通过在导出配置文件之前添加此代码来消除错误
//////////////////////////////////////////////////////////////////////////////
// temporary work around to avoid 'ECONNREFUSED' error, preferably to find another solution
// remove the block when https://github.com/SeleniumHQ/selenium/pull/5759 will be merged && released
let httpIndexFile = "node_modules/selenium-webdriver/http/index.js";
fs.readFile(httpIndexFile, "utf8", function (err, data) {
if (err) {
throw err;
}
let result = data.replace(/\(e.code === 'ECONNRESET'\)/g, "(e.code === 'ECONNRESET' || e.code === 'ECONNREFUSED')");
console.log(`Patching ${httpIndexFile}`);
fs.writeFileSync(httpIndexFile, result, "utf8");
});
let chromeFile = "node_modules/selenium-webdriver/chrome.js";
fs.readFile(chromeFile, "utf8", function (err, data) {
if (err) {
throw err;
}
let result = data.replace(/new http.HttpClient\(url\)/g, "new http.HttpClient(url, new (require('http').Agent)({ keepAlive: true }))");
console.log(`Patching ${chromeFile}`);
fs.writeFileSync(chromeFile, result, "utf8");
});
//////////////////////////////////////////////////////////////////////////////
exports.config = {
同样,这是另一个问题,但调整应该同样有效
当我在后台有更多 chromedriver.exe 个进程时,我就遇到了这种情况。
在后台终止所有进程或重新启动计算机,您应该不会看到此错误。
我的 Protractor 测试随机失败并出现错误。 :
Failed: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:32572
at ClientRequest.<anonymous> (C:\jenkins\workspace\QA-E2E\automation\SeleniumFramework\node_modules\selenium-webdriver\http\index.js:238:15)
at ClientRequest.emit (events.js:223:5)
at Socket.socketErrorListener (_http_client.js:406:9)
at Socket.emit (events.js:223:5)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:81:21)
From: Task: WebDriver.navigate().to(data:text/html,<html></html>)
at Driver.schedule (C:\jenkins\workspace\QA-E2E\automation\SeleniumFramework\node_modules\selenium-webdriver\lib\webdriver.js:807:17)
at Navigation.to (C:\jenkins\workspace\QA-E2E\automation\SeleniumFramework\node_modules\selenium-webdriver\lib\webdriver.js:1133:25)
at Driver.get (C:\jenkins\workspace\QA-E2E\automation\SeleniumFramework\node_modules\selenium-webdriver\lib\webdriver.js:988:28)
at C:\jenkins\workspace\QA-E2E\automation\SeleniumFramework\node_modules\protractor\built\browser.js:675:32
at ManagedPromise.invokeCallback_ (C:\jenkins\workspace\QA-E2E\automation\SeleniumFramework\node_modules\selenium-webdriver\lib\promise.js:1376:14)
节点版本:v12.14.1, npm 版本:6.13.4, 量角器版本:5.4.2, webdriver-manager 版本:12.1.6
注意:我在测试中也使用了 async/await。
前段时间曾经有一个问题,当时这个错误是特定于某个 chromedriver,必须从 selenium 端解决。由于 chromedriver 80 是一个全新的版本,我认为这只是一个临时错误,很快就会修复
同时,你可以试试我用过一段时间的方案。您所需要的只是通过在导出配置文件之前添加此代码来消除错误
//////////////////////////////////////////////////////////////////////////////
// temporary work around to avoid 'ECONNREFUSED' error, preferably to find another solution
// remove the block when https://github.com/SeleniumHQ/selenium/pull/5759 will be merged && released
let httpIndexFile = "node_modules/selenium-webdriver/http/index.js";
fs.readFile(httpIndexFile, "utf8", function (err, data) {
if (err) {
throw err;
}
let result = data.replace(/\(e.code === 'ECONNRESET'\)/g, "(e.code === 'ECONNRESET' || e.code === 'ECONNREFUSED')");
console.log(`Patching ${httpIndexFile}`);
fs.writeFileSync(httpIndexFile, result, "utf8");
});
let chromeFile = "node_modules/selenium-webdriver/chrome.js";
fs.readFile(chromeFile, "utf8", function (err, data) {
if (err) {
throw err;
}
let result = data.replace(/new http.HttpClient\(url\)/g, "new http.HttpClient(url, new (require('http').Agent)({ keepAlive: true }))");
console.log(`Patching ${chromeFile}`);
fs.writeFileSync(chromeFile, result, "utf8");
});
//////////////////////////////////////////////////////////////////////////////
exports.config = {
同样,这是另一个问题,但调整应该同样有效
当我在后台有更多 chromedriver.exe 个进程时,我就遇到了这种情况。 在后台终止所有进程或重新启动计算机,您应该不会看到此错误。