先週、マリオネットと呼ばれるこの新しいFirefoxDriverについて多くの騒ぎがありました。 SeleniumでFirefoxを使用するために、以前は「古い」SeleniumFirefoxDriverを使用していました。 Firefox 48.0以降では、Mozillaによって開発されたこの新しいFirefoxDriverを使用する必要があります。
すべてのブラウザーがそのドライバーをサポートおよび開発し、ドライバーをSeleniumから独立させるには、その方向に変更する必要があることを理解しています。さらに、Mozillaが独自のドライバーを開発すれば、問題の修正や機能の開発がより速く簡単になると思われます。
私の質問は、Seleniumフレームワークを使用して自動テストを作成する人にとって、「古い」SeleniumがサポートするFirefoxDriverの代わりにMarionetteを使用する利点はありますか? _(パフォーマンスの向上、互換性の向上など。 ..)
Mozillaが提供するMarionetteベースのGeckodriverソリューションを使用する主な利点は、Firefox48以降のバージョンで機能することです。 Seleniumプロジェクトによって提供および保守されているレガシードライバーは、Firefox 48以降では機能せず、これらのバージョンのFirefoxでは機能しません。
レガシードライバーはFirefox拡張機能として実装されています。この拡張機能は、WebDriverがFirefoxを起動するときにドライバーが使用するプロファイルにインストールされます。 Firefox 48では、このブラウザ拡張機能を無効にする2つの新機能が導入されました。 1つ目は、いわゆる「電気分解」機能、つまりマルチプロセスFirefoxです。電気分解は、Seleniumチームが完全に理解するのに時間をかけなかった方法で、拡張機能がブラウザーを処理する方法を変更します。
2番目の、より重要な要件は、ブラウザがロードを許可する前に、すべてのブラウザ拡張機能がMozillaによって署名されている必要があることです。この後者の機能は、Firefoxのいくつかのバージョンで使用されてきましたが、48以降、無効にすることはできなくなりました。 WebDriverブラウザー拡張機能は、Firefoxブラウザーにいくつかの有効なセキュリティ上の懸念をもたらします。そのため、Mozillaのセキュリティチームは署名しません。これにより、拡張機能が動作しなくなり、SeleniumはFirefoxと通信できなくなります。そもそもMozillaによって開発および保守されているマリオネットベースのソリューションは、Firefoxの自動化に使用できるという点で彼らに恵まれているため、今後も将来のバージョンで機能し続けるというコミットメントがあります。
したがって、Firefox 48以降でMarionetteを使用する主な利点は、それが機能するのに対し、他のソリューションは機能しないことです。