2016-07-14 1 views
0

Известно, что версия Firefox 47.0.1 несовместима с последней версией Selenium. Даже Firefox анонсирует использовать Marionette. Может кто-нибудь дать некоторые подробности инструкции о том, как использовать Marionette с Geb?Geb: Как использовать Marionette вместо селена Webdriver?

Как проект maven, я пробовал всю версию Selenium с Geb, но не мог быть успешным. Я попробовал следующие версии;

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

Если это не то место, чтобы спросить это, пожалуйста, руководство меня.

ответ

1

Загрузите последнюю версию стандартной версии selenium версии 2.53.1 от selenium.hq.org.downloads и попробуйте использовать новейшую версию Firefox.

0

С версией 48 Firefox, похоже, что единственным решением является использование 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 
    } 
+0

Спасибо Jeff. Я дам ему попытку и дам вам знать результат. :-) –

+0

Вам удалось заставить меня работать? Мне кажется, что @ jeff-lowery также борется? – Hoof

+0

Правильно, у меня нет этой работы, но приведенное выше основано на том, что я мог бы найти в другом месте. Я либо близко, либо совсем не закрываю; -P –

2

У меня есть следующая конфигурация в GebConfig.groovy:

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

Я использую селен 3.0.1, и я с помощью системы -Dgeb.env=firefox чтобы убедиться, что это требует моей конфигурации Firefox, и она отлично работает для меня

С уважением

+0

Я также использую Selenium 3.0.1 от Geb с несколькими драйверами, такими как HtmlUnit (включая JS), PhantomJS, Firefox, IE, Edge, Chrome. Это хорошо работает со всеми из них. Чтобы сделать это менее болезненным для загрузки всех драйверов, я рекомендую [WebDriverManager] (https://github.com/bonigarcia/webdrivermanager). – kriegaex

0

Он должен работать с любыми поздними версиями Selenium. (Все> 2,50 не уверены, что для более ранних версий)

марионетки является внешним водитель, он не включена в Селене пакетах (пока?)

Вам необходимо скачать драйвер геккона здесь https://github.com/mozilla/geckodriver/releases затем указать селен в расположение гексодивера.ехе Вы можете сделать это, как сказал Нельсон, прежде чем в GebConfig с:

import org.openqa.selenium.firefox.MarionetteDriver 

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

, чтобы сделать эту работу вам понадобятся некоторые зависимости в buildscript, я работаю с Gradle, у вас может выглядеть по-другому, просто посмотрите на то, что ваши должно выглядеть мавенна центральной

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-the-firefox-marionette-driver/

+0

Ran this and got: Возникла проблема с оценкой корневого проекта «selenium-java-gradle-template». > Не удалось получить неизвестное свойство 'seleniumVersion' для объекта типа org.gradle.api.internal. artifacts.dsl.dependencies.DefaultDependencyHandler. –

+0

Лучше ответить: Ran this and got: «Возникла проблема с оценкой корневого проекта« selenium-java-gradle-template ». > Не удалось получить неизвестное свойство seleniumVersion для объекта типа org.gradle.api.internal. артефакты .dsl.dependencies.DefaultDependencyHandler «. Поэтому я посмотрел, как установить переменную в gradle и нашел это: def myVar = "theVar" в нашем случае я просто добавил это в build.gradle def seleniumVersion = "3.4.0" –

+1

О, да, конечно, либо объявить 'seleniumVersion' как переменную. Или замените его в моем примере любой версией, которую вы используете. Таким образом, последний 'compile' мог бы выглядеть так: ' "org.seleniumhq.selenium: selenium-support: 3.4.0" ' – Jay