在chrome驱动程序的serenity.properties文件中设置设备名称

时间:2017-10-16 06:24:34

标签: selenium-chromedriver serenity-bdd cucumber-serenity

如何在Serenity托管的Chrome驱动程序中为Nexus 5视图设置移动仿真?

我尝试过这个链接: https://johnfergusonsmart.com/configuring-chromedriver-easily-with-serenity-bdd/

说明设置chrome的首选项。

Chrome preferences
You can also provide more advanced options using the setExperimentalOption() method:

Map<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("download.default_directory", downLoadDirectory);
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("pdfjs.disabled", true);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", chromePrefs);

In Serenity, you would pass these using properties prefixed with the chrome_preferences prefix, e.g.

chrome_preferences.download.default_directory = /my/download/directory
chrome_preferences.profile_default_content_settings.popups = 0
chrome_preferences.pdfjs.disabled=true

由此,我尝试将mobileEmulation设置为

chrome.capabilities.mobile_emulation.device_name= Google Nexus 5 chrome.options.mobileEmulation.deviceName= Google Nexus 5

以及其他一些逻辑变体,但都没有成功。

1 个答案:

答案 0 :(得分:0)

我发现在这个问题上帮助我创建自定义WebDriver的最好方法。

我必须创建一个扩展DriverSource的类。然后将其链接到Serenity Properties文件。这将给我提供我需要的驱动程序。

http://www.thucydides.info/docs/serenity/#_custom_webdriver_implementations

  

您可以通过实施来添加自己的自定义WebDriver提供程序   DriverSource接口。首先,您需要设置以下系统   属性(例如在你的serenity.properties文件中):

webdriver.driver = provided
webdriver.provided.type = mydriver
webdriver.provided.mydriver = com.acme.MyPhantomJSDriver
thucydides.driver.capabilities = mydriver
     

您的自定义驱动程序必须实现DriverSource接口,如图所示   这里:

public class MyPhantomJSDriver implements DriverSource {

    @Override
    public WebDriver newDriver() {
        try {
            DesiredCapabilities capabilities = DesiredCapabilities.phantomjs();
            // Add
            return new PhantomJSDriver(ResolvingPhantomJSDriverService.createDefaultService(),
     

能力);               }               catch(IOException e){                   抛出新错误(e);               }           }

        @Override
    public boolean takesScreenshots() {
        return true;
    }
}
     

此驱动程序现在可以正常截取屏幕截图。