【问题标题】:Where to find ChromeDriver constants for browser preferences in Java?在哪里可以找到用于 Java 中浏览器首选项的 ChromeDriver 常量?
【发布时间】:2018-05-30 10:47:44
【问题描述】:

使用 Selenium WebDriver,如果我想启动 Chrome 浏览器,首先需要设置系统属性,如 -

System.setProperty("webdriver.chrome.driver", chromeDriverLocation);

在此,我们提到了wedriver.chrome.driver,但它已经在“ChromeDriverService”中定义,因此可以直接使用该常量,如 (reference doc) -

System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, chromeDriverLocation);

但如果我想在特定位置下载文件,我会在 Firefox 配置文件中提供详细信息,例如 -

        FirefoxProfile profile = new FirefoxProfile();
        profile.setPreference("browser.download.dir", folder.getAbsolutePath());
        profile.setPreference("browser.download.folderList", 2);
        profile.setPreference("browser.helperApps.neverAsk.saveToDisk",
                "image/jpeg, application/pdf, application/octet-stream");
        profile.setPreference("pdfjs.disabled", true);
        driver = new FirefoxDriver(profile);
    }

在这里我们可以看到browser.download.dirbrowser.helperApps.neverAsk.saveToDisk等常量值。

这些是否像我们ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY 一样在任何地方定义为常量?所以我们可以直接在代码中使用它们。

【问题讨论】:

    标签: java google-chrome selenium selenium-webdriver selenium-chromedriver


    【解决方案1】:

    ChromeDriverService 类支持以下字段:

    因此你可以使用:

    System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, chromeDriverLocation);
    

    但是FirefoxProfile支持三个重载的setPreference()方法如下:

    这三个方法都接受一个 key (String) 和一个 value (boolean/int/String) 对,并设置首选项这个特定的配置文件。 Firefox 浏览器在启动时配置了这些值。

    结论

    所以想要的偏好,例如browser.download.dirbrowser.download.folderListbrowser.helperApps.neverAsk.saveToDiskpdfjs.disabled 等不是常量而是字符串 (boolean/int/String) 对,不能在您的代码中被视为 constants

    【讨论】:

    • System.setProperty(key, value) 也有密钥,但他们仍然将 webdriver.chrome.driver 声明为常量,我不明白为什么 browser.download.dirbrowser.download.folderListbrowser.helperApps.neverAsk.saveToDiskpdfjs.disabled 不是常量。保持不变并没有错,因为它们永远不会改变 - docs.oracle.com/javase/7/docs/api/java/lang/…
    【解决方案2】:

    在 Firefox 中,您可以在地址栏中输入 about:config 以查看所有首选项名称及其当前值。

    对于 Chrome,您可以在地址栏中输入 chrome://flags 以查看所有当前设置及其值。

    点击here了解更多详情

    【讨论】:

      【解决方案3】:

      您可以从代码中更改它:

      System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, chromeDriverLocation);
      

      或命令行参数

      java -Dwebdriver.chrome.driver=chromeDriverLocation testClass
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-08
        • 2011-06-06
        • 2015-07-09
        • 1970-01-01
        • 1970-01-01
        • 2013-09-11
        • 1970-01-01
        相关资源
        最近更新 更多