selenium 使用QAF自动化框架在应用程序.properties文件中设置Chrome功能不起作用

xzv2uavs  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(145)

我对使用QAF自动化框架还很陌生。我遵循了此页面上的文档-https://qmetry.github.io/qaf/latest/setting_driver_capabilities.html
我的要求是:我必须在我的测试中下载一个文件,下载应该放到我的项目的下载文件夹中,而不是MacBook/测试机的下载文件夹中。
我正在使用chromeDriver,并且必须在QAF框架内的应用程序.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.addtional.captions,如下所示,也不起作用

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.capables而不是chrome.capures,但没有成功。
以前用过QAF的人能帮我解决这个问题吗?

xuo3flqw

xuo3flqw1#

在附加功能价值方面需要进行的修改很少:

  • 铬合金选项的密钥为chromeOptions
  • 首选项也是需要使用密钥prefsMap的选项之一
  • 尝试提供下载目录的绝对路径。

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

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-对象

**编辑:**根据驱动版本的不同,您可能需要在Chrome特定能力中添加goog前缀,例如:

chrome.additional.capabilities={"goog:chromeOptions":{"args":["start-maximized","--ignore-certificate-errors"]}}

下面的示例展示了如何在使用侦听器初始化驱动程序之前将功能附加到复杂对象。例如,为了使用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"); 
}
@Override
    public void beforeInitialize(Capabilities desiredCapabilities) {
        ChromeOptions options = new ChromeOptions();
        //set options and merge to capabilites
        //options.addExtensions(paths);
        desiredCapabilities.merge(options);
    }
sg2wtvxw

sg2wtvxw2#

下面的设置放在应用程序的.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}
2fjabf4q

2fjabf4q3#

感谢@user861594回答这个问题。
我最近发现了一种更简单的方法,可以在BaseTestCase类本身中设置Chrome功能,而不是在Application.Properties中设置。
这就是我所做的,而且效果非常好!
声明您的文件路径=“xyz”;

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

享受自动化!

相关问题