2016-07-14 7 views
0

Firefoxのバージョン47.0.1がSeleniumの最新バージョンと互換性がないことは既知の問題です。 Firefoxでも、代わりにMarionetteを使用することを発表しています。誰かがGebでMarionetteを使用する方法の詳細を教えてもらえますか?Geb:Selenium Webdriverの代わりにMarionetteを使用するには?

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

これはこれを聞いて、適切な場所ではない場合、私を導いてください。

答えて

1

selenium.hq.org.downloadsから最新バージョンのセレン標準バージョン2.53.1をダウンロードし、最新のバージョンのFirefoxを使用してみてください。

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 
    } 
+0

ありがとう、ジェフ。私はそれを試して結果を知らせるでしょう。 :-) –

+0

私は働くことができましたか?それは私には、@ jeff - loweryも苦労しているようですか? – Hoof

+0

そうですね、これはうまくいきませんでしたが、上記は私が他の場所で収集できるものに基づいています。私は近くにいるか全く閉じていません;-P –

2

私はGebConfig.groovyの次の設定があります:私はセレン3.0.1を使用していますが、私は-Dgeb.env=firefoxシステムを使用して

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

をプロパティは私のFirefoxの設定を取り、それが私のためにうまく動作していることを確認するためにプロパティです

よろしく

+0

また、HtmlUnit(JSを含む)、PhantomJS、Firefox、IE、Edge、Chromeなどの複数のドライバでGebのSelenium 3.0.1を使用します。それはすべてとうまく動作します。すべてのドライバをダウンロードするのに苦労しないように、[WebDriverManager](https://github.com/bonigarcia/webdrivermanager)をお勧めします。 – kriegaex

0

これは、遅いSeleniumバージョンで動作するはずです。マリオネットは外部ドライバが、それはセレンパッケージに含まれていないされて

(以前のバージョンの> 2.50わからないすべてのもの)(まだ?)

あなたは、その後にセレンを指し、ここでhttps://github.com/mozilla/geckodriver/releases をヤモリのドライバをダウンロードする必要がありますgeckodriverの位置。exeファイル あなたはネルソンとGebConfigに前に言ったようにそれを行うことができます:あなたはbuildscriptでいくつかの依存関係が必要になり、その仕事をするために

import org.openqa.selenium.firefox.MarionetteDriver 

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

、私は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の上のように見える必要があり、あなたが参考になる失敗している場合は、次のことができ、より具体的な説明こちらも見てください作業中のプロジェクト(maven): http://seleniumsimplified.com/2016/04/how-to-use-the-firefox-marionette-driver/

+0

Ran this and got:ルートプロジェクト 'selenium-java-gradle-template'の評価中に問題が発生しました。 >タイプorg.gradle.api.internalのオブジェクトの不明なプロパティ 'seleniumVersion'を取得できませんでした。 artifacts.dsl.dependencies.DefaultDependencyHandler。 –

+0

より良い回答:これを実行して、 "ルートプロジェクト 'selenium-java-gradle-templateを評価する際に問題が発生しました。 > org.gradle.api.internal型のオブジェクトに対して' seleniumVersion 'という不明なプロパティを取得できませんでした アーティファクト.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

関連する問題