我正在使用 selenium-java 版本:org.seleniumhq.selenium:selenium-java:3.8.1,chrome驱动程序版本:ChromeDriver 2.29.461571,google chrome版本:版本58.0 .3029.110(64位)。
当我运行我的测试时,有时谷歌浏览器会打开URL,而不是它没有将请求发送到服务器它等待了很长时间(甚至没有关闭或抛出错误),如果我刷新页面或按地址栏上的Enter键,它正在加载页面。
任何想法,为什么会发生这种情况以及如何解决这个问题。
我尝试过使用org.openqa.selenium.chrome.ChromeDriver和org.openqa.selenium.remote.RemoteWebDriver,我都遇到了同样的问题。
只是添加 - 我使用org.openqa.selenium.Proxy来设置一些http标头。
代码:
Class Test {
private static BrowserMobProxyServer proxyServer;
private static WebDriver driver;
private static WebDriverWait wait;
public static void main(String[] args) {
proxyServer = new BrowserMobProxyServer();
proxyServer.start(0);
Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxyServer);
seleniumProxy.setProxyType(Proxy.ProxyType.MANUAL);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.merge(capabilities);
chromeOptions.setProxy(seleniumProxy);
if (System.getProperties().containsKey("useRemoteWebDriver")) {
RemoteWebDriver remoteDriver = new RemoteWebDriver(
new URL("http://localhost:4141/wd/hub"), chromeOptions);
remoteDriver.setFileDetector(new LocalFileDetector());
driver = remoteDriver;
} else {
ChromeDriverService service = new ChromeDriverService.Builder()
.usingDriverExecutable(new File("<driver path>"))
.usingAnyFreePort()
.build();
driver = new ChromeDriver(service, chromeOptions);
}
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
proxyServer.addHeader("H1", "Value1");
driver.get("http://www.myURL.com/testApp");
}
}