【发布时间】:2017-10-24 10:09:29
【问题描述】:
这是我用来通过 Selenium Webdriver (Java) 启动 Firefox 的代码:
private FirefoxDriver getfox(String pr) {
String geckoPath = "/opt/driver";
String browserPath = "/opt/browser";
String h = pr.split(":")[0];
String p = pr.split(":")[1];
System.setProperty("webdriver.firefox.marionette", geckoPath);
FirefoxProfile fp;
fp = new FirefoxProfile();
System.out.println("setting proxy " + h + ", port " + p);
fp.setPreference("network.proxy.http", h);
fp.setPreference("network.proxy.http_port", p);
FirefoxOptions fo = new FirefoxOptions();
fo.setProfile(fp);
fo.setBinary(browserPath);
FirefoxDriver driver = new FirefoxDriver(fo);
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(30,TimeUnit.SECONDS);
driver.manage().timeouts().setScriptTimeout(30,TimeUnit.SECONDS);
return driver;
}
但是,当我在启动的浏览器中输入 about:config 并检查设置时,只有代理主机已更改。 http_port 设置为 0。当我通过导航检查我的 IP 时,例如,
Webdriver driver = getfox("host.proxy.server:port");
String address = "https://www.find-ip.net";
//String address = "http://www.find-ip.net";
System.out.println("navigating to " + address);
driver.get(address);
System.out.println("searching elements");
String selector = ("div.ipcontent.pure-u-13-24");
List<WebElement> elems = driver.findElements(By.cssSelector(selector));
for (WebElement w : elems) {
System.out.println(w.getText());
}
到http(s)://www.find-ip.net 然后我看到我的真实 IP 地址。我传递的值是正确的。我在 HtmlUnit 驱动程序中设置该代理没有问题。
涉及的版本有:
- 硒 3.6.0
- 火狐 45.9.0
- geckodriver 19.0
我有什么需要改变的吗?
【问题讨论】:
-
从这里github.com/mozilla/geckodriver/releases,推荐使用Firefox 55.0(及更高版本)
标签: selenium firefox selenium-webdriver proxy webdriver