2

如何在 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

和其他一些逻辑变体,但没有一个成功。

4

1 回答 1

0

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

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

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

您可以通过实现 DriverSource 接口来添加您自己的自定义 WebDriver 提供程序。首先,您需要设置以下系统属性(例如在您的 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) { throw new Error(e); } }

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

该驱动程序现在将正常截取屏幕截图。

于 2017-10-23T04:32:47.290 回答