硒和私人代理

时间:2015-06-16 04:40:17

标签: java selenium

我想知道如何在使用Firefox驱动程序时专门为我的Selenium测试添加私有代理。

我知道在SO上有一个类似的问题建议使用BrowserMob,但我希望能够在不下载任何外部应用程序的情况下完成。

有没有办法直接这样做?我正在讨论使用需要身份验证的私有代理。

我已经阅读了数百个SO帖子但没有提供解决方案..我正在使用Java。

1 个答案:

答案 0 :(得分:1)

import java.util.ArrayList;
import java.util.List;

import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.Proxy.ProxyType;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

public class WebdriverUsingProxy {

    private List<String> urlList = new ArrayList<String>();

    @Before
    public void setup() {
        urlList.add("http://www.stackoverflow.com");
        urlList.add("https://www.google.com");
    }

    @Test
    public void passTraffixThroughProxyTest() {
        String httpProxy = "192.168.1.101:8080";
        String sslProxy = "192.168.1.101:8080";
        String ftpProxy = "192.168.1.101:8080";

        DesiredCapabilities capability = new DesiredCapabilities();
        addProxyCapabilities(capability, httpProxy, sslProxy, ftpProxy);

        for (String url : urlList){
            WebDriver driver = new FirefoxDriver(capability);
            driver.get(url);
            driver.close();
        }
    }

    public static DesiredCapabilities addProxyCapabilities(DesiredCapabilities capability, String httpProxy, String sslProxy,
            String ftpProxy) {
        Proxy proxy = new Proxy();
        proxy.setProxyType(ProxyType.MANUAL);
        proxy.setHttpProxy(httpProxy);
        proxy.setSslProxy(sslProxy);
        proxy.setFtpProxy(ftpProxy);

        capability.setCapability(CapabilityType.PROXY, proxy);
        capability.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
        return capability;
    }
}

代理类型是手动的,我将HTTP,SSL和FTP代理设置为192.168.1.101:8080。这是使用Proxy对象并设置所需的功能完成的。您可以将其作为变量传递。