ChromeDriver(Capabilities capabilities) is deprecated
Asked Answered
S

2

12

I use ChromeDriver 2.33 with WebDriver 3.6.0 and try to set default directory for file download.

Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", Vars.DOWNLOAD_FOLDER_ROOT);
DesiredCapabilities caps = DesiredCapabilities.chrome();

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
options.setExperimentalOption("prefs", prefs);
caps.setCapability(ChromeOptions.CAPABILITY, options);
driver = new ChromeDriver(caps);

I found this in docs:

Use ChromeDriver(ChromeOptions) instead. Creates a new ChromeDriver instance. The capabilities will be passed to the chromedriver service.

Swelter answered 17/10, 2017 at 8:45 Comment(3)
Where is the question?Coenobite
@Coenobite : Sorry, I asked for a workaround to solve this.Swelter
@Swelter I've added an answer with workaround for this. Please accept it if, it resolves your query.Hive
H
35

I hope you wanted to ask about the workaround to avoid the deprecation.

The old method of just building with Capabilities is deprecated. Now, it takes a ChromeDriverService & Capabilities as parameters. So, just a build a ChromeDriverService and pass the same along with your Capabilities to remove the deprecation warning.

DesiredCapabilities capabilities = DesiredCapabilities.chrome();

ChromeDriverService service = new ChromeDriverService.Builder()
                    .usingDriverExecutable(new File("/usr/local/chromedriver"))
                    .usingAnyFreePort()
                    .build();
ChromeDriver driver = new ChromeDriver(service, capabilities);

EDIT: Since ChromeDriver(service, capabilities) is deprecated now as well, you can use,

DesiredCapabilities capabilities = DesiredCapabilities.chrome();

ChromeDriverService service = new ChromeDriverService.Builder()
                            .usingDriverExecutable(new File("/usr/local/chromedriver"))
                            .usingAnyFreePort()
                            .build();
ChromeOptions options = new ChromeOptions();
options.merge(capabilities);    
ChromeDriver driver = new ChromeDriver(service, options);

However, You can completely skip DesiredCapabilities and use only ChromeOptions with setCapability method like,

ChromeOptions options = new ChromeOptions();
options.setCapability("capability_name", "capability_value");
driver = new ChromeDriver(options);
Hive answered 17/10, 2017 at 8:52 Comment(4)
It is working, but ChromeDriver() method is signed as deprecated in this case too.Swelter
@Sidhar: Thanks! Just a little fix: Variable driver should be WebDriver instead of ChromeDriver.Swelter
@Swelter you can assign it to WebDriver as ChromeDriver extends RemoteWebDriver and RemoteWebDriver implements WebDriverHive
@Swelter may I know why my answer was not acceptedHive
S
3

The new way to use chrome capabilities is like this :

ChromeOptions options = new ChromeOptions();
    // Proxy proxy = new Proxy();
    // proxy.setHttpProxy("myhttpproxy:3337");
    // options.setCapability("proxy", proxy);
    // options.addArguments("--headless");
    // options.addArguments("--disable-gpu");
    // options.setAcceptInsecureCerts(true);
    // options.addArguments("--allow-insecure-localhost");
    // options.addArguments("--lang=fr-CA");
    options.addArguments("--start-maximized");
driver = new ChromeDriver(options);

You can get more options by looking at this site : https://sites.google.com/a/chromium.org/chromedriver/capabilities

Spurious answered 19/2, 2018 at 15:43 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.