Selenium 2.53がFirefox 47で動作しない


107

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が読み込まれません。


1
はい、私も同じエラーを受け取ります。もう一度アンインストールして再インストールします。ブラウザーが開いている場合は、リセットして再試行してください。
Kishan Patel

こんにちはKishan、私はあなたが言ったように試しましたが、それでも同じエラー... 46.0.1に格下げしました
veena k

うん。mozillaからのショーストッパーの問題がありました。彼らはバージョンを更新した。再び47にロールバックできます。:-)
Kishan Patel


1
この問題は、OSXで「 'Firefox.bin "を開けません。開発者のIDを確認できないため、エラーが発生します。46にダウングレードすることで解決しました。
hoosteeno 2016年

回答:


93

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

したがって、セレンwebdriverを2.53.0ブラウザとしてFirefoxの47.0を使用するためには、あなたがダウンロードする必要がFirefoxのドライバ(と呼ばれるバイナリファイルでgeckodriver、バージョン0.8.0のように、そして以前wires)と変数への絶対パスをエクスポートwebdriver.gecko.driverなどJavaコードのシステムプロパティ:

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

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

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>4.1.0</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)はあまり安定していません。詳細については、マリオネットのロードマップをご覧ください。

更新

Selenium WebDriver 2.53.1が2016年6月30日にリリースされました。ブラウザとしてFirefoxDriverFirefox 47.0.1を使用して再び動作しています。


9
これは誤りです。FirefoxDriverが壊れているにもかかわらず、MarionetteDriverは実際には47ではサポートされていません。どうやら47.0.1がリリースされ(いつか)、FirefoxDriverが再び動作するようになるでしょう。作業中のMarionetteDriverは、期待どおりに47になりませんでした。github.com/mozilla/geckodriver/issues/89bugzilla.mozilla.org/show_bug.cgi?id=1279950を参照してください-注:MarionettDriverがまったく機能しないと言っているのではなく、TONで機能しないということだけです現在のところ、ダウングレードが唯一のオプションです。
dmansfield 2016年

7
47.0.1にアップデートしましたが、SeleniumはまだFirefoxに接続していません。Firefoxがクラッシュすることはなくなりましたが、127.0.0.1:7055への接続に失敗します。TcpViewを実行すると、Firefoxの起動後にポート7055のリスナーがありません。
BardMorgan 2016年

2
Mac、Mono、Selenium .NET 2.53.0を使用して、BardMorganと同じ動作が見られます。Firefox 47.0.1は起動しますが、タイムアウトエラーOpenQA.Selenium.WebDriverException:45000ミリ秒以内にソケットを起動できませんでした。次のアドレスに接続しようとしました:127.0.0.1:7055 – netstatはそのポートへのリスナーを表示しません。
Otto G

1
また、Windows 10とネイティブ.NETでもテストしましたが、問題は同じです。:セレンは、接続しようとしますが、何のサービスがリッスンしていないことをnetstatのショーC:\Windows\system32>netstat -ano | find "7055" TCP 127.0.0.1:2896 127.0.0.1:7055 SYN_SENT 2052
オットー・G

1
参考までに、Selenium 2.53.0によって起動されたFirefox 47.0.1のabout:addonsにアクセスすると、[拡張機能]タブに「Firefox WebDriverはFirefox 47.0.1と互換性がありません」と表示されます。これは、github.com / SeleniumHQ / selenium / blob / selenium - 2.53.0 / javascript /…の最大バージョンが47.0であるためです。–ヘッドバージョンは修正されているため、GitHubから最新のSeleniumコードをビルドすると問題が解決します。
Otto G

18

firefox 46.0.1を使用してみてください。Selenium 2.53に最適です。

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

おかげでラーマン..それは今動作しています...しかし、要件が最新バージョンで動作している場合はどうなりますか?
veena k 2016

解決策が機能する場合、答えを受け入れてもらえますか?:-)
Mahbub Rahman

8
これは解決策ではなく、以前のバージョンにダウングレードされます。
TiGreX 2016年

1
私もこれを行いました(ただし、v45に移動しました)-このパスを下った場合は、<path> \ Mozilla Firefox \ updater.exeの名前をupdater.exe.disableに変更して、ダウングレードされたバージョンが現在のバージョンにアップグレードされないようにしてください自動的に。これを実現する方法は他にもあるかもしれませんが、オプション設定で更新を無効にしてもうまくいきませんでした。
ドリュー

10

同じ問題があり、サポートが終了したため、ドライバーを切り替える必要があることがわかりました 。Firefoxドライバーを使用する代わりに、テストを実行するためにマリオネットドライバーを使用する必要があります。私は現在、自分で設定を行っています。実際に動作する例がある場合は、必要に応じていくつかの推奨手順を投稿できます。

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");

6

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の小道具。



3

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));

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

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;
    }
}

注:プロファイルでの起動はFF 47では機能しません。FF50 Nightlyでは機能します。

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


2

https://github.com/SeleniumHQ/selenium/issues/2110によると、新しいSeleniumライブラリがリリースされています

ダウンロードページ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で動作します。

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


セレンを2.53.1にアップグレードすると問題が解決したことを確認できます。
ディスパー、2016

これが最良の答えです。
ホリスティック開発者

2

その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を使用します。


19時間前のコメントによると:「Firefox 47.0.1が修正されてリリースされました。次に、FirefoxDriverで使用されるxpiのバージョンバンプを取得するために、クライアントライブラリをリリースする必要があります。」これは、なぜ2.53.0と47.0.1でもまだ問題があるのか​​を説明しているようです。
Otto G

2

Firefox 47.0はWebdriverとの連携を停止しました。

最も簡単な解決策は、Firefox 47.0.1とWebdriver 2.53.1に切り替えることです。この組み合わせは再び機能します。実際、https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes/によると、Webdriver互換性の復元が47.0.1リリースの主な理由でした。


現在、Firefox 47.0.1はWebdriver 2.53.0でも正常に動作しています。私はこの組み合わせをテストしました。
veena k

2

このコードを使ってみてください。

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

セレン3.0.0にアップグレードし、Firefoxのバージョンは49.0.1です

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

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

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


1

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

これには、webdriver.firefox.binプロパティを通じて設定できるFirefoxバイナリがどこにあるかをWebdriverが知る必要があります。

私のために働いたもの(/tmp/ff46インストールフォルダとしてのmac、maven )は:

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

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



1

2016年9月現在

Firefox 48.0そして、selenium==2.53.6エラーなしで作業罰金

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

sudo apt-get update
sudo apt-get upgrade firefox

1

最良の解決策は、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();

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.