web-dev-qa-db-ja.com

Selenium 2.53がFirefox 47で機能しない

WebDriverでFirefoxを使用しているときにエラーが発生しました。

org.openqa.Selenium.firefox.NotConnectedException: Unable to connect
to Host 127.0.0.1 on port 7055 after 45000 ms.
  • Firefoxのバージョン:47.0
  • セレン:2.53.0
  • Windows 10 64ビット

誰かが似たような問題を抱えていますか、またはこれに対する解決策は何かという考えがありますか。 Chromeでは問題なく動作しますが、FirefoxではURLが読み込まれません。

106
veena k

残念ながらSelenium WebDriver 2.53.0はFirefox 47.0と互換性がありません。 Firefoxブラウザを処理するWebDriverコンポーネント(FirefoxDriver)は廃止される予定です。バージョン3.0以降、Selenium WebDriverはFirefoxブラウザを管理するためにgeckodriverバイナリを必要とします。詳しい情報 はこちらはこちら

したがって、Selenium WebDriver 2.53.0でFirefox 47.0をブラウザとして使用するには、 Firefoxドライバgeckodriverというバイナリファイル)をダウンロードする必要があります。バージョン0.8.0以降で、以前はwires)、その絶対パスをJavaコードのシステムプロパティとして変数webdriver.gecko.driverにエクスポートします。

System.setProperty("webdriver.gecko.driver", "/path/to/geckodriver");

幸いなことに、ライブラリ WebDriverManager はあなたのためにこの仕事をすることができます、すなわちあなたのマシン(Linux、Mac、またはWindows)のための適切なMarionetteバイナリをダウンロードして適切なシステムプロパティの値このライブラリを使用するには、この依存関係をプロジェクトに含める必要があります。

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>3.6.1</version>
</dependency>

...そしてWebDriverを使う前にプログラムの中でこの行を実行してください。

WebDriverManager.firefoxdriver().setup();

WebDriverを使用したJUnit 4テストケースの完全な実行例は次のとおりです。

public class FirefoxTest {

    protected WebDriver driver;

    @BeforeClass
    public static void setupClass() {
        WebDriverManager.firefoxdriver().setup();
    }

    @Before
    public void setupTest() {
        driver = new FirefoxDriver();
    }

    @After
    public void teardown() {
        if (driver != null) {
            driver.quit();
        }
    }

    @Test
    public void test() {
        // Your test code here
    }
}

Marionetteが将来(WebDriver 3以降およびFirefox 48以降)の唯一の選択肢になることを考慮に入れてくださいが、現在(執筆時点でのバージョン0.9.0)はそれほど安定していません。詳細については、 Marionetteロードマップ をご覧ください。

UPDATE

Selenium WebDriver2.53.1は、2016年6月30日にリリースされました。FirefoxDriverは、Firefox47.0.1をブラウザとして使用しています。

92
Boni García

Firefox 46.0.1を使ってみてください。 Selenium 2.53と最適です

https://ftp.mozilla.org/pub/firefox/releases/46.0.1/win64/en-US/
18
Mahbub Rahman

同じ問題があり、 サポートが廃止された ので、ドライバを切り替える必要があることがわかりました。テストを実行するには、Firefoxドライバの代わりに Marionette ドライバを使用する必要があります。私は現在自分でセットアップを進めていますが、実例があるときに必要な場合はいくつか提案されたステップを投稿することができます。

Mac上の私のJava環境でこれを機能させるために私が従ったステップはここにあります(私のLinuxインストール(Fedora、CentOSおよびUbuntu)で私のために同様に働きました):

  1. リリースページから夜間実行可能ファイルをダウンロードしてください
  2. アーカイブを解凍する
  3. Marionette用のディレクトリを作成します(例:mkdir -p /opt/marionette)。
  4. 解凍した実行可能ファイルを作成したディレクトリに移動します。
  5. 実行可能ファイルを含めるように$PATHを更新します(必要に応じて.bash_profileも編集します)。
  6. :bangbang:chmod +x /opt/marionette/wires-x.x.xを実行可能にしてください
  7. 起動時には、必ず以下のコードを使用してください(これは私がMacで使用したものです)。

クイックノート

まだ期待通りに動作していませんが、少なくともブラウザは現在起動しています。その理由を理解する必要があります - 今はそれを機能させるためにテストを書き直す必要があるようです。

Javaスニペット

WebDriver browser = new MarionetteDriver();
System.setProperty("webdriver.gecko.driver", "/opt/marionette/wires-0.7.1-OSX");
10
el n00b

あなたがMacを使っているのならbrew install geckodriverしてください、そして、あなたは行っています!

6
The Whiz of Oz

Homebrewを使用してOSXを使用している場合は、brew caskを介して古いFirefoxバージョンをインストールできます。

brew tap goldcaddy77/firefox
brew cask install firefox-46 # or whatever version you want

インストールしたら、ApplicationsディレクトリにあるFF実行可能ファイルの名前を "Firefox"に変更するだけです。

より詳しい情報はgit repo homebrew-firefox にあります。 オリジナルの樽 を作成するための smclernon への小道具。

6
Dan Caddigan

万が一誰かがC#でMarionetteを使用する方法を疑問に思っている場合。

FirefoxProfile profile = new FirefoxProfile(); // Your custom profile
var service = FirefoxDriverService.CreateDefaultService("DirectoryContainingTheDriver", "geckodriver.exe");
// Set the binary path if you want to launch the release version of Firefox.
service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
var option = new FirefoxProfileOptions(profile) { IsMarionette = true };
var driver = new FirefoxDriver(
    service,
    option,
    TimeSpan.FromSeconds(30));

Selenium v​​53 はまだその機能を提供していないため、FirefoxOptionsをオーバーライドして機能を追加したりFirefoxプロファイルを設定したりする機能を提供します。

public class FirefoxProfileOptions : FirefoxOptions
{
    private DesiredCapabilities _capabilities;

    public FirefoxProfileOptions()
        : base()
    {
        _capabilities = DesiredCapabilities.Firefox();
        _capabilities.SetCapability("marionette", this.IsMarionette);
    }

    public FirefoxProfileOptions(FirefoxProfile profile)
        : this()
    {
        _capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());
    }

    public override void AddAdditionalCapability(string capabilityName, object capabilityValue)
    {
        _capabilities.SetCapability(capabilityName, capabilityValue);
    }

    public override ICapabilities ToCapabilities()
    {
        return _capabilities;
    }
}

注:profileで起動してもFF 47では機能しません。FF 50 Nightlyでは機能します。

しかし、テストをMarionetteを使用するように変換しようとしましたが、ドライバの実装が完了していないかバグがあるため、現時点では実行できません。現時点ではFirefoxをダウングレードすることをお勧めします。

3
Steven

Firefox 47.0はWebドライバの使用を中止しました。

最も簡単な解決策はFirefox 47.0.1とWebdriver 2.53.1に切り替えることです。この組み合わせもまたうまくいきます。事実、 https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes/によると、Webdriverの互換性を回復することが47.0.1リリースの背後にある主な理由でした。 .

2
user7610

によると、新しいSeleniumライブラリが出ました、 https://github.com/SeleniumHQ/Selenium/issues/2110

ダウンロードページ http://www.seleniumhq.org/download/ はまだ更新されていないようですが、のマイナーバージョンに1を追加することでリンクは、私はC#のバージョンをダウンロードすることができます: http://Selenium-release.storage.googleapis.com/2.53/Selenium-dotnet-2.53.1.Zip

Firefox 47.0.1で動作します。

ちなみに、./go //javascript/firefox-driver:webdriver:runを実行することで、GitHubのmasterブランチからwebdriver.xpi Firefox拡張機能だけをビルドできました。エラーメッセージが表示されましたが、build/javascript/firefox-driver/webdriver.xpi fileこれは、名前の衝突を避けるために名前を変更し、FirefoxProfile.AddExtensionメソッドで正常にロードすることができます。 Seleniumライブラリ全体を再構築する必要なしに、これは合理的な回避策でした。

2
Otto G

そのFF47号 https://github.com/SeleniumHQ/Selenium/issues/2110

FF 46以下にダウングレードしてください(またはFF48開発者を試してください https://developer.mozilla.org/en-US/Firefox/Releases/48

ダウングレードする方法についての指示: https://www.liberiangeek.net/2012/04/how-to-install-previous-versions-of-firefox-in-ubuntu-12-04 -precise-pangolin / またはMacを使用している場合は、このスレッドの他の人が示唆しているようにbrewを使用してください。

2
Supra

このコードを使ってみることができます、

private WebDriver driver;
System.setProperty("webdriver.firefox.marionette","Your path to driver/geckodriver.exe");        
driver = new FirefoxDriver();

Selenium 3.0.0にアップグレードしました。Firefoxのバージョンは49.0.1です。

Geckodriver.exeは、 https://github.com/mozilla/geckodriver/releases からダウンロードできます。

Zipファイルのみ、geckodriver-v0.11.1-win64.Zipファイル、またはwin32ファイルをシステムごとにダウンロードして、フォルダに展開してください。

そのフォルダのパスを「ドライバへのパス」の引用符に入れます。パスにgeckodriver.exeを入れることを忘れないでください。

2
suketup

2016年9月現在

Firefox 48.0Selenium==2.53.6はエラーなく正常に動作します

FirefoxをUbuntu 14.04のみでアップグレードする

Sudo apt-get update
Sudo apt-get upgrade firefox
1
Levon

これが 問題がWireshar kでどのように見えたかです。

2.53.1をロードするだけですべてがうまくいきます。

1
John Peters

最善の解決策はSelenium 3.0.0にアップデートし、geckodriver.exeをダウンロードし、Firefox 47以降を使用することです。

Firefoxの初期化を次のように変更しました。

 string geckoPathTest = Path.Combine(Environment.CurrentDirectory, "TestFiles\\geckodriver.exe");
 string geckoPath = Path.Combine(Environment.CurrentDirectory, "geckodriver.exe");
 File.Copy(geckoPathTest, geckoPath);
 Environment.SetEnvironmentVariable("webdriver.gecko.driver", geckoPath);
 _firefoxDriver = new FirefoxDriver();
1
Tomas Kubes

私は、これを解決するために、私の通常の(安全な、最新の)Firefoxのインストールに加えて、最終的に追加の古いバージョンのFirefox(テストのためだけに使われる)をインストールしました。

これにはWebドライバがFirefoxバイナリを見つけることができる場所を知ることが必要です。これはwebdriver.firefox.binプロパティを通して設定することができます。

私にとってうまくいったこと(インストールフォルダとしてのmac、maven、/tmp/ff46):

mvn -Dwebdriver.firefox.bin=/tmp/ff46/Firefox.app/Contents/MacOS/firefox-bin verify

Firefoxの古いバージョンを専用のフォルダにインストールするには、フォルダを作成し、そのフォルダでFinderを開いてFirefox dmgをダウンロードし、それをそのFinderにドラッグします。

1
avandeursen

Ubuntu 15では、Selenium 2.53.6firefox 44と連携することを確認できます。