0

已知问题是,Firefox 版本 47.0.1 与 Selenium 最新版本不兼容。甚至 Firefox 也宣布改用 Marionette。有人可以详细说明如何将 Marionette 与 Geb 一起使用吗?

作为一个 maven 项目,我用 Geb 尝试了所有版本的 Selenium,但未能成功。我尝试了以下版本;

2.50.0

2.50.1

2.51.0

2.52.0

2.53.0

2.53.1

2.6.0

2.7.0

2.8.0

2.9.0

如果这不是问这个问题的正确地方,请指导我。

4

4 回答 4

2

我在 GebConfig.groovy 中有下一个配置:

firefox {
    System.setProperty("webdriver.gecko.driver","path/geckodriver")
    driver = {new MarionetteDriver()}
}

我正在使用 selenium3.0.1并且我使用-Dgeb.env=firefox系统属性以确保它采用我的 Firefox 配置并且它对我来说工作正常

问候

于 2016-10-31T19:27:11.683 回答
1

从selenium.hq.org.downloads下载最新版本的 selenium 标准版本 2.53.1并尝试使用最新版本的 Firefox。

于 2016-07-14T06:53:49.663 回答
0

它应该适用于任何最新的 Selenium 版本。(对于早期版本,一切 > 2.50 不确定)

Marionette 是一个外部驱动程序,它不包含在 Selenium 包中(还没有?)

您需要在此处下载 gecko 驱动程序https://github.com/mozilla/geckodriver/releases 然后将 selenium 指向 geckodriver.exe 的位置您可以按照 Nelson 之前在 GebConfig 中所说的那样执行此操作:

import org.openqa.selenium.firefox.MarionetteDriver

driver = {
    System.setProperty("webdriver.gecko.driver","path/geckodriver")
    new MarionetteDriver()
}

为了完成这项工作,您需要在 buildscript 中添加一些依赖项,我正在使用 gradle,您的可能看起来不同,只需查看您在 maven Central 上需要的样子

compile('info.novatec.testit:webtester-support-marionette:2.0.4') { transitive = false }
compile "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion"
compile "org.seleniumhq.selenium:selenium-support:$seleniumVersion"

(您可能不需要硒支持)

如果您需要更多帮助,更具体地描述您失败的地方会有所帮助,您也可以在这里寻找一个工作项目(使用 maven): http ://seleniumsimplified.com/2016/04/how-to-use -firefox木偶驱动程序/

于 2017-01-09T01:21:19.747 回答
0

使用 Firefox 48 版,看起来唯一的解决方案是使用 marionnette,但是我还不能让它在 Geb 中工作。

这是我在 GebConfig.groovy 中尝试过的:

environments {

firefox {
    driver = {
        DesiredCapabilities dc = DesiredCapabilities.firefox();
        LoggingPreferences prefs = new LoggingPreferences();
        prefs.enable(LogType.BROWSER, Level.WARNING);
        dc.setCapability(CapabilityType.LOGGING_PREFS, prefs);
        dc.setCapability("marionette", true);

        String currentDir = System.getProperty("user.dir");
        String marionetteDriverLocation = currentDir + "/WebDriver/wires";
        System.setProperty("webdriver.gecko.driver", marionetteDriverLocation);

        FirefoxProfile p = new FirefoxProfile();
        p.setPreference("webdriver.gecko.driver", marionetteDriverLocation);
        p.setPreference("webdriver.log.file", "/tmp/firefox_console");
        p.setPreference("toolkit.telemetry.enabled", false);
        p.setPreference("geo.enabled", false);
        p.setPreference("plugins.update.notifyUser", false);

        p.setPreference("datareporting.healthreport.service.enabled", false);
        p.setPreference("datareporting.healthreport.uploadEnabled", false);
        p.setPreference("datareporting.policy.dataSubmissionEnabled",false);
        p.setPreference("datareporting.healthreport.service.firstRun", false);
        p.setPreference("datareporting.healthreport.logging.consoleEnabled", false);
        p.setPreference("reader.parse-on-load.enabled", false);

        dc.setCapability(FirefoxDriver.PROFILE, p);

        def driver = new FirefoxDriver(dc)
        driver.manage().timeouts().pageLoadTimeout(45, TimeUnit.SECONDS)
        return driver
    }
于 2016-08-18T19:41:51.813 回答