java - 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");
这是我在日志中看到的。
解决方案
您需要为 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!
推荐阅读
- r - 在闪亮的不工作中部署 R 程序
- php - 碳逐月获得数字回报三月 2
- java - Pivotal GemFire 多会话的 Spring 会话
- powershell - 网格中的多行
- laravel - Laravel 5.6 队列重启 CPU 使用率
- python-requests - Python - 更改请求参数,使其不以“?=”和“&”开头
- angular6 - 当我在获取带有订阅的数据后调度操作时的无限循环
- c# - 如何比较两个属性组合的两个列表并选择第三个属性不匹配的行?
- json - 我怎样才能解决这个问题?从“[String]”转换为不相关类型“[String : AnyObject]”总是失败
- python - 有上限误差的上限