操作系统: CentOS 8
NodeJS版本: v14.5.0
NPM版本: 6.14.5
在运行我的NodeJS程序时,据我所知,它无法连接到Selenium服务器,该程序使用WebdriverIO从Target和BestBuy等站点获取产品信息。它抛出一个未处理的promise rejection警告,如下所示。
ECONNREFUSED 127.0.0.1:PORT我已经安装了Selenium独立服务器、Chromedriver、WDIO-Standalone和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($)
}));
});
}我似乎找不出错误的原因。你认为如何?
发布于 2020-08-09 12:30:05
原来我所需要做的就是添加--no-sandbox标志。甚至不需要设置服务和浏览器端口,它根本无法通过我们的--no-sandbox以根用户身份启动Chrome。希望这篇文章能帮助任何人解决同样的问题。
https://stackoverflow.com/questions/63310655
复制相似问题