2

我一直在尝试使用 docker 和 selenium grid 解决 RemoteWebDriver 和 ChromeOptions 的一些问题。主要问题在于代理,但我通过代理 pac 文件将 pac 文件 url 作为 arg 传递到 ChromeOptions 中解决了一半。下面的代码在 docker debug 和本地独立运行时运行良好,但是一旦我尝试使用网格或部署并使用竹子运行,驱动程序就会打开,我可以看到 ChromeOptions 没有被传递,因为没有使用 poxy pac 文件,它是刚刚冻结在 org.openqa.selenium.remote.ProtocolHandshake createSession。我已经研究了几个星期了,现在我正处于一个困难的阶段。我看过一些帖子说 DesiredCapabilities 已被弃用,但我还没有找到一种方法来实现 ChromeOptions 没有它。

    ChromeOptions options = new ChromeOptions();
    options.addArguments("--start-maximized");
    options.addArguments("--disable-infobars");
    options.addArguments("--proxy-pac-url= http://ProxyPacURL.com");
    DesiredCapabilities dc = DesiredCapabilities.chrome();
    dc.setCapability(ChromeOptions.CAPABILITY, options);
    driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), dc);
4

3 回答 3

2

更新到最新的 Selenium Jars,确保你的 java 是 1.8 或更高版本,然后你可以将 ChromeOptions 传递给驱动程序,因为 DesiredCapabilities 已被弃用。我现在可以使用 selenium 网格运行 selenium docker 节点,并且所有 ChromeOptions 参数现在都被传递给容器。

    ChromeOptions options = new ChromeOptions();
    options.addArguments("--start-maximized");
    options.addArguments("--disable-infobars");
    options.addArguments("--proxy-pac-url=http://myPacFile.com");
    options.addArguments("--no-sandbox");
    driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), options);
于 2018-08-27T14:05:19.013 回答
0

尝试这个:

const GRID_HOST = 'http://localhost:4444/wd/hub';

var options = new chrome.Options();
options.addArguments("--start-maximized");
options.addArguments("--disable-infobars");
options.addArguments("--proxy-pac-url=http://myPacFile.com");
options.addArguments("--no-sandbox");

driver = new webdriver.Builder()
.usingServer(GRID_HOST)
.forBrowser("chrome")
.setChromeOptions(options)
.build()
于 2021-01-03T17:02:34.287 回答
0

我遇到了同样的问题,我找到了如下解决方案:我们需要设置“goog:chromeOptions”而不是“chromeOptions”。

在您的 Java 代码中,存在以下行:

dc.setCapability(ChromeOptions.CAPABILITY, options);

如果您导航到 ChromeOptions.CAPABILITY,您会注意到它是一个值为“chromeOptions”的常量。这适用于本地 Web 驱动程序,但不适用于远程 Web 驱动程序(即硒网格)。

只需将上面的行更改为:

dc.setCapability("goog:chromeOptions", options);

现在,当您执行 Java 代码时,它会正常工作,并且您的所有选项也将显示它们的效果。

我遇到了其他页面,例如this,它引用了上述解决方案。

于 2021-03-30T08:41:07.660 回答