2015-06-16 76 views
0

我想知道如何使用Firefox驅動程序專門添加私人代理到我的Selenium測試。硒和私人代理

我知道在SO上有一個類似的問題,它建議使用BrowserMob,但是我希望能夠在不下載任何外部應用程序的情況下完成。

有沒有辦法直接做到這一點?我正在談論使用需要認證的私人代理。

我讀過數百個SO帖子,但都沒有提供解決方案..我正在使用Java。

回答

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。這是通過使用代理對象並設置所需的功能完成的。你可以將它作爲變量傳遞。