首页 > 解决方案 > Kubernetes 中的 Selenium - 只允许本地连接

问题描述

我正在尝试运行一个运行 Selenium 的应用程序以获取一些屏幕截图。

当我在 docker compose 文件中运行应用程序时,一切正常,但是,当我尝试在云中的 kubernetes 集群中运行时,我不断收到以下消息:Only local connections are allowed,并且似乎没有建立连接。在我看来,问题是由于网络和 selenium 不允许不是来自本地主机的连接,就像 kubernetes 中的情况一样。

我正在使用图像:selenium/standalone-chrome图像(我的图表中的硒/独立铬:3.141),显然铬驱动程序是:2.43.600233

我一直在尝试使用 --whitelisted-ips 选项来解决这个问题,但无济于事。我努力了:

chromeOptions.addArguments("--whitelisted-ips");
chromeOptions.addArguments("--whitelisted-ips=");
chromeOptions.addArguments("--whitelisted-ips=''");

这是我的一些java代码。

import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.TakesScreenshot;
chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--verbose");
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--whitelisted-ips=");
chromeOptions.addArguments("--disable-gpu");

这是我在日志中看到的。

在此处输入图像描述

标签: javaseleniumselenium-webdriverkubernetesselenium-chromedriver

解决方案


您需要为 chromedriver 可执行文件设置 whitelisted-ips 参数。您可以通过JAVA_OPTS为 docker chrome-node 图像设置 env 来实现它:

  chrome:
    image: selenium/node-chrome:3.141.59
    container_name: chrome
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444
      - JAVA_OPTS=-Dwebdriver.chrome.whitelistedIps=

供参考。 chromeOptions.addArguments("--whitelisted-ips=");将参数传递给 chrome 而不是 chromedriver!


推荐阅读