如何使用Selenium webdriver和Java为firefox设置代理?

时间:2017-08-22 06:36:42

标签: java selenium firefox

System.setProperty("webdriver.gecko.driver", "E:\\geckodriver-v0.18.0-win64\\geckodriver.exe");
    Proxy p = new Proxy();
    p.setSocksProxy("83.209.94.87:35923");
    DesiredCapabilities cap = new DesiredCapabilities();
    cap.setCapability(CapabilityType.PROXY, p);
    WebDriver driver = new FirefoxDriver(cap);
    driver.get("https://www.google.com.au");

此代码位于main方法内。当我运行此代码时,启动了Firefox,但未遵循google url,并且代理未设置为我在上面的代码中指定的代理。我该如何解决这个问题?

public static void main(String[] args) throws InterruptedException, IOException, UnsupportedEncodingException {
    while (true) {
    System.setProperty("webdriver.gecko.driver", "E:\\geckodriver-v0.18.0-win64\\geckodriver.exe");
    WebDriver driver;
    String PROXY = "83.209.94.87:35923";
      //Bellow given syntaxes will set browser proxy settings using DesiredCapabilities.
      Proxy proxy = new Proxy();
      proxy.setAutodetect(false);
      proxy.setProxyType(Proxy.ProxyType.MANUAL);
      proxy.setSocksProxy(PROXY);
      DesiredCapabilities cap = new DesiredCapabilities();
      cap.setCapability(CapabilityType.PROXY, proxy);
      //Use Capabilities when launch browser driver Instance.
      driver = new FirefoxDriver(cap);`

3 个答案:

答案 0 :(得分:1)

因为一个错误,你现在无法使用Proxy对象。您应该使用以下代码

    FirefoxProfile profile = new FirefoxProfile();
    profile.setPreference("network.proxy.type", 1);
    profile.setPreference("network.proxy.socks", "83.209.94.87");
    profile.setPreference("network.proxy.socks_port", 35923);

    FirefoxDriver driver = new FirefoxDriver(profile);
    driver.get("https://www.ipinfo.io");

https://github.com/mozilla/geckodriver/issues/764上讨论了这个错误,你可以看到木偶驾驶员在下面的链接中做了什么

https://dxr.mozilla.org/mozilla-central/source/testing/marionette/session.js#155

所以上面的代码只复制相同的

答案 1 :(得分:1)

在Selenium 3.14.2,Firefox 62,C#.NET 4.5中工作

FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"GeckoDriver19", "geckodriver.exe");
service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";

FirefoxOptions firefoxOptions = new FirefoxOptions();
firefoxOptions.SetPreference("network.proxy.type", 1);
firefoxOptions.SetPreference("network.proxy.socks", "127.0.0.1");
firefoxOptions.SetPreference("network.proxy.socks_port", 1080);

IWebDriver driver = new FirefoxDriver(service, firefoxOptions);

driver.Navigate().GoToUrl("https://www.hbus.com/register");

答案 2 :(得分:0)

您可以在自动化代码中通过凭据在此处设置代理详细信息,如上面的答案所述,但这是另一种方法,而无需使用firefox配置文件在Java或python代码中共享您的详细信息。
firefox提供配置文件,我们可以为每个用户创建配置文件并针对代理,书签等对其进行自定义。
Windows用户:打开运行(win + R)并键入'firefox -p'
linux用户:运行命令'firefox -p'
1-它将打开一个对话框,您可以在其中创建个人资料,然后选择该个人资料并打开Firefox。
2-打开一个新标签并搜索'about:config'。接受“风险”并继续,然后单击“显示全部”
3-在这里您可以搜索和设置所有属性
例如:
network.proxy.type 1
1表示手动
2个用于自动代理
适用于Manuall代理-
属性值
network.proxy.http您的代理ip
network.proxy.http_port number端口号
network.proxy.ssl代理服务器ip
network.proxy.ssl_port />端口号
network.proxy.ftp和您的代理ip
network.proxy.ftp_port端口号

(查找您的个人资料名称)
Linux: cd .mozilla / firefox /
Windows:按。键盘上的+ R。将打开“运行”对话框。 输入:%APPDATA%\ Mozilla \ Firefox \ Profiles \ 单击确定。将打开一个包含配置文件文件夹的窗口 现在在Java代码中加载此配置文件

FirefoxOptions options = new FirefoxOptions();
options.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.ACCEPT);
FirefoxProfile profile=new FirefoxProfile(new File("path of your profile"));
options.setProfile(profile);
WebDriver driver = new FirefoxDriver(options);
System.setProperty("webdriver.gecko.driver", "path of gecko driver");
driver.get("url");