How to set proxy for Chrome browser in selenium using Java code

Viewed 43475

I am trying to run my selenium java code to test a webpage. But webpage is not loading because of network restrictions. When I set the proxy manually and hit the url in browser it works fine. Now I need to pass those proxy setting while running the selenium code. Please help me on this.

I tried below code, but still it shows the same error:

Proxy p=new Proxy();


// Set HTTP Port to 7777
p.setHttpProxy("www.abc.com:8080");

// Create desired Capability object
DesiredCapabilities cap=new DesiredCapabilities();

// Pass proxy object p
cap.setCapability(CapabilityType.PROXY, p);

// Open  firefox browser
WebDriver driver=new ChromeDriver(cap);
5 Answers

Passing a Capabilities object to the ChromeDriver() constructor is deprecated. One way to use a proxy is this:

String proxy = "127.0.0.1:5000";
ChromeOptions options = new ChromeOptions().addArguments("--proxy-server=http://" + proxy);
WebDriver webDriver = new ChromeDriver(options);

Passing a Capabilities object to the ChromeDriver() constructor is deprecated. You can find new official doc here.

ChromeOptions chromeOptions = new ChromeOptions();

Proxy proxy = new Proxy();
proxy.setAutodetect(false);
proxy.setHttpProxy("http_proxy-url:port"); 
proxy.setSslProxy("https_proxy-url:port");
proxy.setNoProxy("no_proxy-var");

chromeOptions.setCapability("proxy", proxy); 
driver = new ChromeDriver(chromeOptions);

Another way of doing it:

        boolean useProxy = true;
        ChromeOptions options = new ChromeOptions().addArguments(
                '--headless',
                '--no-sandbox',
                '--disable-extensions',
                '--proxy-bypass-list=localhost');
        if (useProxy) {
            options.addArguments("--proxy-server=http://ProxyHost:8080");
        }

        WebDriver driver = new ChromeDriver(options);

See https://peter.sh/experiments/chromium-command-line-switches/ for more Chrome switches

Related