我想知道如何在使用Firefox驱动程序时专门为我的Selenium测试添加私有代理。
我知道在SO上有一个类似的问题建议使用BrowserMob,但我希望能够在不下载任何外部应用程序的情况下完成。
有没有办法直接这样做?我正在讨论使用需要身份验证的私有代理。
我已经阅读了数百个SO帖子但没有提供解决方案..我正在使用Java。
答案 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对象并设置所需的功能完成的。您可以将其作为变量传递。