使用QAF Automation框架在application.properties文件中设置chrome功能不起作用

时间:2017-07-25 21:41:57

标签: java selenium selenium-chromedriver qaf

我是使用QAF自动化框架的新手。我按照此页面上的文档进行了操作 - https://qmetry.github.io/qaf/latest/setting_driver_capabilities.html

我的要求是:我必须在测试中下载文件,下载应该转到我项目的下载文件夹而不是macbook / test machine的下载文件夹。

我使用chromeDriver并且必须在QAF框架内的application.properties文件中设置chrome功能。我添加了以下内容,但它无法正常工作

chrome.capabilities.profile.default_content_settings.popups=0
chrome.capabilities.download.default_directory=/downloads
chrome.capabilities.credentials_enable_service=false
chrome.capabilities.profile.password_manager_enabled=false
chrome.capabilities.CapabilityType.ACCEPT_SSL_CERTS=true
chrome.additional.capabilities={"chrome options":{"args":["--headless -
-disable-gpu"]}}

我也尝试直接使用chrome.additional.capabilities获取我想设置的所有功能,如下所示,并且它没有工作

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

当我执行测试时,测试成功运行并通过,但文件已下载到我的macbook下载目录,而不是我已使用功能设置的项目特定下载文件夹。

我尝试使用chromeDriver.capabilities而不是chrome.capabilities但没有成功。

以前使用过QAF的人能帮助我解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

额外能力值的修正需求很少:

  • Chrome选项的键是chromeOptions
  • 首选项也是需要使用键prefs
  • 映射的选项之一
  • 尝试为下载目录提供绝对路径。

您的附加功能应如下所示(确保没有换行符):

 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}}}

参考chromeOptions-object

下面的示例显示了在使用侦听器进行驱动程序初始化之前如何使用复杂对象追加功能。例如,要使用 Firefox个人资料,您可以使用qaf driver listener

@Override
public 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"); 
} 

答案 1 :(得分:0)

感谢@ user861594回答此问题。

我最近发现了一种更简单的方法来在BaseTestCase类中设置此chrome功能,而不是在application.properties中。

这就是我所做的,而且效果非常好!!

声明你的filePath =“xyz”;

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

享受自动化!

答案 2 :(得分:0)

以下设置位于application.properties文件中。

对于Chrome:

driver.name=chromeDriver
chrome.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

以下设置对我来说适用于IE11

driver.name=iExplorerdriver
system.webdriver.ie.driver = C:/server/IEDriverServer.exe
iexplorer.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}