目前在 Ubuntu EC2 上使用 Firefox 和 Chrome 节点运行 Selenium Grid。使用 TestNG 运行测试,通过 Firefox 节点运行的测试可以完美运行,但是使用 Chrome 节点时,我在导航到第二个 URL 后总是被拒绝连接。我发现令人困惑的是,当通过我的 Mac 在本地运行网格时,一切正常。
以下是 Chrome 测试的方式:
- 获取登录页面 URL
- 登录
- 尝试获取新页面 URL
- 拒绝连接
这个问题以前见过吗?对于类似的报告问题,我尝试了很多解决方案,但无济于事。我对 Selenium Grid 很陌生,所以我发现很难弄清楚发生了什么。
我的撰写文件:
version: "3"
services:
chrome:
image: selenium/node-chrome:4.0.0-rc-2-prerelease-20210908
shm_size: 2gb
volumes:
/dev/shm:/dev/shm
environment:
SE_EVENT_BUS_HOST=selenium-hub
SE_EVENT_BUS_PUBLISH_PORT=4442
SE_EVENT_BUS_SUBSCRIBE_PORT=4443
SE_NODE_SESSION_TIMEOUT=10
SE_SESSION_REQUEST_TIMEOUT=60
JAVA_OPTS=-Dwebdriver.chrome.whitelistedIps=
START_XVFB=false
ports:
"6900:5900"
firefox:
image: selenium/node-firefox:4.0.0-rc-2-prerelease-20210908
shm_size: 2gb
volumes:
/dev/shm:/dev/shm
environment:
SE_EVENT_BUS_HOST=selenium-hub
SE_EVENT_BUS_PUBLISH_PORT=4442
SE_EVENT_BUS_SUBSCRIBE_PORT=4443
SE_NODE_SESSION_TIMEOUT=10
SE_SESSION_REQUEST_TIMEOUT=60
START_XVFB=false
ports:
"6901:5900"
edge:
image: selenium/node-edge:4.0.0-rc-2-prerelease-20210908
shm_size: 2gb
volumes:
/dev/shm:/dev/shm
environment:
SE_EVENT_BUS_HOST=selenium-hub
SE_EVENT_BUS_PUBLISH_PORT=4442
SE_EVENT_BUS_SUBSCRIBE_PORT=4443
SE_NODE_SESSION_TIMEOUT=10
SE_SESSION_REQUEST_TIMEOUT=60
START_XVFB=false
ports:
"6902:5900"
selenium-hub:
image: selenium/hub:4.0.0-rc-2-prerelease-20210908
container_name: selenium-hub
ports:
"4442:4442"
"4443:4443"
"4444:4444"
depends_on:
chrome
edge
firefox
我的 ChromeDriver 设置:
WebDriverManager.chromedriver().setup();
// chrome browser prefrences
HashMap<String, Object> prefs = new HashMap<>();
prefs.put("profile.default_content_settings.popups", 0);
prefs.put("download.prompt_for_download", false);
prefs.put("safebrowsing.enabled", false);
prefs.put("download.extensions_to_open", "application/xml");
prefs.put("download.extensions_to_open", "application/csv");
prefs.put("download.extensions_to_open", "application/pdf");
prefs.put("download.extensions_to_open", "application/zip");
// set chrome options
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("prefs", prefs);
chromeOptions.addArguments("--start-fullscreen");
chromeOptions.addArguments("--safebrowsing-disable-download-protection");
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("--disable-gpu");
chromeOptions.addArguments ("--disable-setuid-sandbox");
chromeOptions.addArguments ("--no-first-run");
chromeOptions.addArguments ("--safebrowsing-disable-auto-update ");
chromeOptions.addArguments ("--disable-background-networking");
chromeOptions.addArguments("--headless", "--enable-logging", "--window-size=1920x1080");
// start remote session
driver = new RemoteWebDriver(new URL("http://localhost:4444/"),chromeOptions);
硒/节点铬日志:
在端口 22087 上启动 ChromeDriver 93.0.4577.15 (660fc11082ba57405eca2e8c49c3e1af756fbfae-refs/branch-heads/4577@{#203}) 允许所有远程连接。请改用许可名单!有关保持 ChromeDriver 安全的建议,请参阅 https://chromedriver.chromium.org/security-considerations。ChromeDriver 已成功启动。16:48:54.257 INFO [ProtocolHandshake.createSession] - 检测到方言:W3C 启动 ChromeDriver 93.0.4577.15 (660fc11082ba57405eca2e8c49c3e1af756fbfae-refs/branch-heads/4577@{#203}) 端口 6601 允许所有远程连接。请改用许可名单!请参阅 https://chromedriver.chromium.org/security-considerations有关保持 ChromeDriver 安全的建议。ChromeDriver 已成功启动。16:49:13.576 INFO [ProtocolHandshake.createSession] - 检测到的方言:W3C 16:49:32.070 WARN [SpanWrappedHttpHandler.execute] - 无法执行请求:java.net.ConnectException:连接被拒绝:localhost/127.0.0.1:6601 java .io.UncheckedIOException: java.net.ConnectException: Connection denied: localhost/127.0.0.1:6601 at org.openqa.selenium.remote.http.netty.NettyHttpHandler.makeCall(NettyHttpHandler.java:80) at org.openqa.selenium .remote.http.AddSeleniumUserAgent.lambda$apply$0(AddSeleniumUserAgent.java:42) at org.openqa.selenium.remote.http.Filter.lambda$andFinally$1(Filter.java:56) at org.openqa.selenium.remote .http.netty.NettyHttpHandler.execute(NettyHttpHandler.java:51) 在 org.openqa.selenium.remote.http.AddSeleniumUserAgent。