【问题标题】:Setting device name in serenity.properties file for chrome driver在 chrome 驱动程序的 serenity.properties 文件中设置设备名称
【发布时间】:2017-10-16 06:24:34
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    您可以通过实现 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(),
    

    能力); } 捕捉(IOException e){ 抛出新的错误(e); } }

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

    这个驱动现在可以正常截图了。

    【讨论】:

    • 我遇到了类似的问题,能够启动 Chrome 浏览器,但它要求登录谷歌账户,所以我手动登录谷歌账户,但是当我开始执行时还在登录页面,有什么办法可以跳过这个页面吗?
    猜你喜欢
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 2014-08-25
    • 2013-05-31
    • 2014-10-03
    相关资源
    最近更新 更多