Java’s RemoteWebDriver-opdrachten via een proxy sturen
Stel ClientConfig op de opdrachtuitvoerder in wanneer de Java-runner een externe WebDriver-service via een forwardproxy moet bereiken.
Java runner → configured proxy → WebDriver service
remote browser → its own route → website
Stel voor het eerste pad de Java-opdrachtuitvoerder in:
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URI;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.HttpCommandExecutor;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.http.ClientConfig;
var proxy = new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("proxy.example", 8080));
var config = ClientConfig.defaultConfig()
.baseUri(URI.create("https://grid.example/"))
.proxy(proxy);
var executor = new HttpCommandExecutor(config);
var driver = new RemoteWebDriver(executor, new ChromeOptions());
Gebruik het echte Grid-eindpunt, inclusief het pad waarop het is uitgerold. Behoud de vereiste Chrome-opties en beëindig de sessie met driver.quit().
Dit is java.net.Proxy voor de HTTP-verbinding van de runner. Seleniums capability org.openqa.selenium.Proxy regelt juist het paginaverkeer van de browser; gebruik die alleen ook als het tweede pad een proxy nodig heeft.
Een fout bij het maken van de sessie of verzenden van opdrachten hoort bij het eerste pad. Latere navigatie kan op het tweede mislukken. Authenticatie bij de tussenpersoon van de runner vereist een door dat HTTP-transport ondersteunde methode; een authenticatiecallback in de browser stelt die niet in.