如何在selenium:Java中为chrome设置代理

如何在selenium:Java中为chrome设置代理,java,google-chrome,selenium,proxy,Java,Google Chrome,Selenium,Proxy,我已经为PhantomJS设置了代理,并使用下面的代码验证了IP地址。它很好用 这里的主机名是IP地址:43.19.196.36 DesiredCapabilities capabilities = DesiredCapabilities.phantomjs(); capabilities.setJavascriptEnabled(true); System.setProperty("phantomjs.binary.path", "../Drivers/phantomjs.exe"); Ar

我已经为PhantomJS设置了代理,并使用下面的代码验证了IP地址。它很好用

这里的主机名是IP地址:43.19.196.36

DesiredCapabilities capabilities = DesiredCapabilities.phantomjs();
capabilities.setJavascriptEnabled(true);
System.setProperty("phantomjs.binary.path", "../Drivers/phantomjs.exe");

ArrayList<String> cliArgsCap = new ArrayList<String>();
cliArgsCap.add("--proxy=hostname:port");
cliArgsCap.add("--proxy-auth=username:password");
cliArgsCap.add("--proxy-type=http");
capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArgsCap);

driver = new PhantomJSDriver(capabilities);

driver.get("http://api.ipify.org/");
logger.info("IP Address: " + Jsoup.parse(driver.getPageSource()).body().text());
但是,如何为chrome设置相同的代理?这是我的密码。它会打印我的IP地址。它没有使用代理

Proxy proxy = new Proxy();

proxy.setHttpProxy("hostname:port");
proxy.setFtpProxy("hostname:port");
proxy.setSslProxy("hostname:port");
proxy.setSocksUsername("username");
proxy.setSocksPassword("password");

capabilities.setCapability(CapabilityType.PROXY, proxy);
这将打印我的IP地址:

2017-07-24 16:37:47 INFO  ElectoralRoll:81 - IP Address: 
我也试过这个。但没有起作用

capabilities.setCapability("chrome.switches", Arrays.asList("--proxy-server=http://username:password@hostname:port"));
参考:

编辑:我添加了:(@Riaz的答案)

在我的代码中使用这个,它说:

2017-07-26 20:22:03 INFO  ElectoralRoll:83 - IP Address: proxy authorization required
尝试查看代码。特别是这些位:

proxy.setProxyType(ProxyType.MANUAL);

capability.setCapability(CapabilityType.PROXY, proxy);
我不知道Chrome中有什么特殊的需求,所以它可能是一些基本的东西。

试着检查一下代码。特别是这些位:

proxy.setProxyType(ProxyType.MANUAL);

capability.setCapability(CapabilityType.PROXY, proxy);

我不知道Chrome中有什么特殊的需求,所以它可能是一些基本的功能。

看起来Chrome使用基本身份验证时出现了问题

因此,我已将我的IP地址添加到Proxymesh仪表板中的“已验证的IP或主机名”中。这样我就绕过了用户名和密码认证

Proxy Proxy=newproxy();
setHttpProxy(“主机名:端口”);
setFtpProxy(“主机名:端口”);
setSslProxy(“主机名:端口”);
//proxy.setsocksuername(“用户名”);
//proxy.setSocksPassword(“密码”);
proxy.setAutodetect(false);
ProxyType(ProxyType.MANUAL);
能力.setCapability(CapabilityType.PROXY,PROXY);

有了这个,我可以使用chrome使用代理。此解决方案特定于ProxyMesh提供商。

使用Chrome的基本身份验证时出现问题

因此,我已将我的IP地址添加到Proxymesh仪表板中的“已验证的IP或主机名”中。这样我就绕过了用户名和密码认证

Proxy Proxy=newproxy();
setHttpProxy(“主机名:端口”);
setFtpProxy(“主机名:端口”);
setSslProxy(“主机名:端口”);
//proxy.setsocksuername(“用户名”);
//proxy.setSocksPassword(“密码”);
proxy.setAutodetect(false);
ProxyType(ProxyType.MANUAL);
能力.setCapability(CapabilityType.PROXY,PROXY);
有了这个,我可以使用chrome使用代理。此解决方案特定于ProxyMesh提供程序

proxy.setProxyType(ProxyType.MANUAL);

capability.setCapability(CapabilityType.PROXY, proxy);