2016-07-14 13 views
0

Es ist bekannt, dass die Version 47.0.1 von Firefox nicht mit der neuesten Version von Selen kompatibel ist. Selbst Firefox kündigt an, stattdessen Marionette zu verwenden. Kann jemand einige Anweisungen geben, wie Marionette mit Geb zu benutzen ist?Geb: Wie benutzt man Marionette anstelle von Selen Webdriver?

Als Maven-Projekt habe ich alle Versionen von Selenium mit Geb versucht, konnte aber nicht erfolgreich sein. Ich habe die folgenden Versionen ausprobiert;

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

Ist dies nicht der richtige Ort, um dies zu stellen, bitte mich leiten.

Antwort

1

Laden Sie die neueste Version der Selen-Standardversion 2.53.1 von selenium.hq.org.downloads herunter und versuchen Sie, die neueste Version von Firefox zu verwenden.

0

Mit der Firefox-Version 48 sieht es so aus, als ob marionnette die einzige Lösung ist, aber ich habe es noch nicht geschafft, in Geb zu arbeiten.

Dies ist, was ich in GebConfig.groovy versucht:

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

Danke Jeff. Ich werde es versuchen und Ihnen das Ergebnis mitteilen. :-) –

+0

Hast du es geschafft, dass ich zur Arbeit komme? Es scheint mir, dass @ Jeff-Lowery auch struggeling ist? – Hoof

+0

Richtig, ich habe das nicht funktioniert, aber das oben genannte basiert auf dem, was ich woanders finden konnte. Ich bin entweder nah oder nicht in der Nähe ;-P –

2

ich die nächste Konfiguration in GebConfig.groovy haben:

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

Ich bin mit Selen 3.0.1 und ich das -Dgeb.env=firefox System Eigenschaft, um sicherzustellen, dass es meine Firefox-Konfiguration dauert und es funktioniert gut für mich

Grüße

+0

Ich benutze auch Selenium 3.0.1 von Geb mit mehreren Treibern wie HtmlUnit (inkl. JS), PhantomJS, Firefox, IE, Edge, Chrome. Es funktioniert gut mit allen von ihnen. Um das Herunterladen der Treiber zu erleichtern, empfehle ich [WebDriverManager] (https://github.com/bonigarcia/webdrivermanager). – kriegaex

0

Es sollte mit jeder der späten Selenium Versionen arbeiten. (Alles> 2,50 nicht sicher, die für frühere Versionen)

Marionette ist ein externer Treiber, es ist nicht in den Selen-Paketen enthalten (noch?)

benötigen Sie den Gecko-Treiber hier https://github.com/mozilla/geckodriver/releases dann zum Download Selen auf den Punkt Lage des Geckodriver.exe können Sie tun das, wie Nelson sagte, bevor in GebConfig mit:

import org.openqa.selenium.firefox.MarionetteDriver 

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

, um diese Arbeit zu machen Sie einige Abhängigkeiten in Ihrem buildscript brauchen, ich bin mit gradle arbeiten, Ihnen anders aussehen könnte, schauen Sie in das, was ihr müssen wie auf maven aussehen zentrale

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" 

(Selen Unterstützung für Sie nicht notwendig sein könnte)

Wenn Sie weitere Hilfe benötigen, eine speziellere Beschreibung, wo Sie hilfreich wäre versagen, können Sie schau auch hier nach für ein Arbeitsprojekt (mit maven): http://seleniumsimplified.com/2016/04/how-to-use-the-firefox-marionette-driver/

+0

Lief das und bekam: Ein Problem ist bei der Auswertung des Root-Projekts 'selen-java-gradle-template' aufgetreten. > Die Eigenschaft 'selenVersion' für Objekt vom Typ org.gradle.api.internal konnte nicht gefunden werden. artifacts.dsl.dependencies.DefaultDependencyHandler. –

+0

Bessere Antwort: Lief dies und bekam: "Ein Problem ist aufgetreten, Wurzel-Projekt 'Selen-Java-Gradle-Vorlage' zu bewerten. > Konnte nicht unbekannte Eigenschaft 'SelenVersion' für Objekt des Typs org.gradle.api.internal. Artefakte .dsl.dependencies.DefaultDependencyHandler. " Also habe ich nachgeschaut, wie man eine Variable in Gradle setzt und diese gefunden: def myVar = "theVar" in unserem Fall habe ich das einfach zu build.gradle hinzugefügt. SelenVersion = "3.4.0" –

+1

Oh, ja, natürlich auch nicht Erklären Sie 'selenVersion' als Variable. Oder ersetzen Sie es in meinem Beispiel durch die von Ihnen verwendete Version. So könnte dann das letzte 'compile' aussehen: ' "org.seleniumhq.selenium: selen-support: 3.4.0" ' – Jay

Verwandte Themen