有时量角器无法执行测试并出现 EADDRINUSE 127.0.0.1:4444 错误

and*_*man 5 webdriver node.js protractor

我正在使用 protactor 1.8,使用 multiCapabilities 和 7 个并行运行的 chrome 浏览器实例。我总是能够成功地运行我的测试服。我最近将量角器更新到了 3.2.2 版。我的测试服开始间歇性地返回以下错误消息。

    Error: EADDRINUSE connect EADDRINUSE 127.0.0.1:4444
    [chrome #31]     at ClientRequest.<anonymous> (C:\myAppe2e\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:365:15)
    [chrome #31]     at emitOne (events.js:77:13)
    [chrome #31]     at ClientRequest.emit (events.js:169:7)
    [chrome #31]     at Socket.socketErrorListener (_http_client.js:267:9)
    [chrome #31]     at emitOne (events.js:77:13)
    [chrome #31]     at Socket.emit (events.js:169:7)
    [chrome #31]     at emitErrorNT (net.js:1253:8)
    [chrome #31]     at nextTickCallbackWith2Args (node.js:442:9)
    [chrome #31]     at process._tickCallback (node.js:356:17)
    [chrome #31] From: Task: WebElement.isSelected()
    [chrome #31]     at WebDriver.schedule (C:\myAppe2e\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:344:17)
    [chrome #31]     at WebElement.schedule_ (C:\myAppe2e\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:1712:25)
    [chrome #31]     at WebElement.isSelected (C:\myAppe2e\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:2023:17)
    [chrome #31]     at actionFn (C:\myAppe2e\node_modules\protractor\built\element.js:82:76)
    [chrome #31]     at Array.map (native)
    [chrome #31]     at C:\myAppe2e\node_modules\protractor\built\element.js:374:46
    [chrome #31]     at Promise.invokeCallback_ (C:\myAppe2e\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1329:14)
    [chrome #31]     at TaskQueue.execute_ (C:\myAppe2e\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2790:14)
    [chrome #31]     at TaskQueue.executeNext_ (C:\myAppe2e\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2773:21)
    [chrome #31]     at C:\myAppe2e\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2652:27
    [chrome #31]     at C:\myAppe2e\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:639:7
    [chrome #31]     at process._tickCallback (node.js:369:9)
    [chrome #31] Error
    [chrome #31]     at ElementArrayFinder.applyAction_ (C:\myAppe2e\node_modules\protractor\built\element.js:371:27)
    [chrome #31]     at ElementArrayFinder._this.(anonymous function) [as isSelected] (C:\myAppe2e\node_modules\protractor\built\element.js:83:30)
    [chrome #31]     at ElementFinder._this.(anonymous function) [as isSelected] (C:\myAppe2e\node_modules\protractor\built\element.js:685:22)
Run Code Online (Sandbox Code Playgroud)

Rub*_*con 3

问题很可能不是网络驱动程序配置。更改端口最初可能会有所帮助,但如果程序正在占用虚拟机/计算机上的可用端口,则此修复不会持续太久。这和我遇到的问题是一样的;所以我创建了一个批处理脚本(在运行我的自动化之前)运行:

net session /delete
Run Code Online (Sandbox Code Playgroud)

这会关闭所有打开的 TIME_WAIT 和 CLOSE_WAIT 连接。之后立即重新运行我的测试,它们运行时没有出现 EADDRINUSE 错误。希望这至少可以作为一种解决方法有所帮助。祝你好运!