Setting chrome capabilities in application.properties file using QAF Automation framework is not working Setting chrome capabilities in application.properties file using QAF Automation framework is not working selenium selenium

Setting chrome capabilities in application.properties file using QAF Automation framework is not working


Few correction needs in additional capability value:

  • Key for chrome options is chromeOptions
  • preferences is also one of the option which requires map with key prefs
  • Try providing absolute path for download directory.

Your additional capability should look like below (make sure there is no line break):

 chrome.additional.capabilities={"chromeOptions":{"args":["--allow- outdated-plugins","--always-authorize-plugins","--headless --disable- gpu","-disable-extensions"],"prefs": {"profile.default_content_settings.popups":0, "download.default_directory":"/usr/workspace/testproject/downloads", "credentials_enable_service":false, "profile.password_manager_enabled":false}}}

Refer chromeOptions-object

Below example shows how you can append capability with complex object before driver initialization using listener. For instance, in order to use Firefox profile you can utilize qaf driver listener.

@Overridepublic void beforeInitialize(Capabilities desiredCapabilities) {    FirefoxProfile profile= new FirefoxProfile();    //create and set profile as per need    profile.setPreference( "layout.css.devPixelsPerPx", "0.9" );     ((DesiredCapabilities)desiredCapabilities).setCapability(FirefoxDriver.PROFILE, profile);   //you also can provide existing profile name. AFAIK firefoxdriver supports existing profile name as well.   //((DesiredCapabilities)desiredCapabilities).setCapability(FirefoxDriver.PROFILE, "my-profile"); } 
@Override    public void beforeInitialize(Capabilities desiredCapabilities) {        ChromeOptions options = new ChromeOptions();        //set options and merge to capabilites        //options.addExtensions(paths);        desiredCapabilities.merge(options);    }


Below settings are placed in application.properties file.

For Chrome:

driver.name=chromeDriverchrome.capabilities={"chromeOptions":{"args":["--allow-outdated-plugins","--always-authorize-plugins","--headless --disable-gpu","-disable-extensions"],"prefs":{"profile.default_content_settings.popups":0,"download.default_directory":"C:\\server","credentials_enable_service":false,"profile.password_manager_enabled":false}}}webdriver.chrome.driver =C:/server/chromedriver.exe

Below setting worked for me for IE11

driver.name=iExplorerdriversystem.webdriver.ie.driver = C:/server/IEDriverServer.exeiexplorer.additional.capabilities={'ignoreProtectedModeSettings':true}iexplorer.additional.capabilities={'nativeEvents':false}iexplorer.additional.capabilities={'unexpectedAlertBehaviour':accept}iexplorer.additional.capabilities={'enablePersistentHover':true}iexplorer.additional.capabilities={'ignoreZoomSetting':true}iexplorer.additional.capabilities={'requireWindowFocus':true}iexplorer.additional.capabilities={"ignoreProtectedModeSettings":"true",'nativeEvents':false,'unexpectedAlertBehaviour':accept,'enablePersistentHover':true,'ignoreZoomSetting':true,'requireWindowFocus':true}iexplorer.additional.capabilities={'ignoreProtectedModeSettings':true,'nativeEvents':false,'unexpectedAlertBehaviour':accept,'enablePersistentHover':true,'ignoreZoomSetting':true,'requireWindowFocus':true}


Thanks @user861594 for answering the question.

I recently found out an easier way to set this chrome capabilities in the BaseTestCase class itself and not in application.properties.

Here is what I did and it worked wonderfully!!

Declare your filePath = "xyz";

String chromePrefs = "{'acceptSslCerts': true,'chromeOptions':   {'prefs': {'prompt_for_download': false,'download.default_directory': '"+filePath+"'}}}";      ConfigurationManager.getBundle().setProperty("chrome.additional.capabilities", chromePrefs);

Enjoy automating!