Selenium WebdriverIO ECONNREFUSED



操作系统:CentOS 8
NodeJS版本:v14.5.0
NPM版本:6.14.5

当运行我的NodeJS程序时,它使用WebdriverIO从Target和BestBuy等网站获取产品信息,根据我的判断,它无法连接到Selenium服务器。它抛出一个未处理的承诺拒绝警告,如下所示。

ECONNREFUSED 127.0.0.1:PORT

我已经安装了Selenium独立服务器、Chromedriver、WDIO独立服务器和WebdriverIO。我尝试在4444端口上运行Selenium独立服务器jar,并具有以下驱动程序功能。

function driver(url, proxy) {
return new Promise((resolve, reject) => {
remote({
runner: true,
outputDir: __dirname,
services: [
["selenium-standalone", {
logPath: "./selenium.out",
args: {
version: "4.0.0",
seleniumArgs: ["-host", "127.0.0.1", "-port", "4444"]
}
}]
],
capabilities: {
browserName: "chrome",
port: 4444,
proxy: {
proxyType: "manual",
httpProxy: proxy.host + ":" + proxy.port
},
"goog:chromeOptions": {
args: [
"--headless", "--disable-gpu",
"user-agent=" + new UserAgent().toString()
]
}
}
}).then((browser) => sync(() => {
browser.url(url);
const $ = cheerio.load(browser.getPageSource());
browser.deleteSession();
resolve($)
}));
});
}

我似乎搞不清这些错误的原因。你觉得怎么样?

原来我只需要添加--no-sandbox标志。甚至不需要设置服务和浏览器端口,它只是无法使用--no-sandbox以root身份启动Chrome。希望这能帮助任何有同样问题的人。

最新更新