Serenity 如何 运行 测试 chrome 模拟器(chrome 网络浏览器中的移动模式)

Serenity how to run on tests chrome emulator (mobile mode in chrome web browser)

我是 Serenity 的新手,我想 运行 在 chome 网络浏览器中的移动模式下进行测试,它被称为移动仿真。我已经参考了这个 link 并使用 selenium java 我已经设法做到了。 https://chromedriver.chromium.org/mobile-emulation

我需要对 Serenity 做同样的事情。

谁能告诉我需要做什么?它可以添加到 属性 文件中,如果是那么如何?

例如,对于 iPhone 6/7/8 Plus,您可以使用 "serenity.browser.width=414" 和 "serenity.browser.height=736" Serenity 属性 (http://thucydides.info/docs/serenity-staging/#_serenity_system_properties_and_configuration) 并将它们放入 serenity.properties 项目根目录下的文件

link you provided 给你 Java 代码:

Map<String, String> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceName", "Nexus 5");

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);
WebDriver driver = new ChromeDriver(chromeOptions);

对 "serenity chrome options" 的简单搜索会导致(第一次命中!)this page,它说:

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

所以也许是这样的:

chrome_preferences.mobileEmulation.deviceName = "Nexus 5"

您需要创建一个新包,然后在该包下,您可以通过创建一个应实现 DriverSource 的 class 来实现自定义驱动程序来处理移动仿真。此外,在您的 serenity.properties 文件中进行以下更改。

class CustomeDriver implements DriverSource {
    Webdriver driver;
    @Override
    public WebDriver newDriver() {

        Map<String, String> mobileEmulation = new HashMap<>();
        mobileEmulation.put("deviceName", "iPhone 6");

        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);

        driver = new ChromeDriver(chromeOptions);
        return driver;
    }

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


webdriver.driver = provided
webdriver.provided.type = mydriver
webdriver.provided.mydriver = **screenplay**.CustomeDriver 
serenity.driver.capabilities = mydriver

-->剧本是包名

最后,您需要通过调用getDriver()..navigate().to("https://www.google.com");

来获取驱动程序