1

多くの場合、Firefox で自動化された Selenium テストを実行しているときに、次のエラーに遭遇します。

Selenium::WebDriver::Error::InvalidElementStateError: Cannot perform native interaction: Could not load native events component.`

誰かが技術的に理解するのを手伝ってくれませんか:

  1. このエラーが発生する原因は何ですか?
  2. 新しい Selenium Webdriver バージョンをリリースすると、どのように解決されますか?
  3. Chrome や IE ではなく、Firefox でのみ表示されるのはなぜですか?
4

1 に答える 1

8

Windows のデフォルトでは、Firefox ドライバーは要素とのやり取りにいわゆる「ネイティブ イベント」を使用します。つまり、マウスとキーボードの相互作用は、相互作用をシミュレートするために JavaScript を使用する、より一般的ではあるものの、限定的で精度が低い可能性があるのではなく、OS レベルのメカニズムを使用してシミュレートされます。Firefox の場合、C++ ソースからコンパイルされた OS 固有のバイナリ ライブラリ (Linux では .so、Windows では .dll) をロードする必要があります。これらのバイナリー・ライブラリーは、Gecko SDK の特定のバージョンにリンクする必要があります。つまり、特定のバージョンの Firefox でのみロードして使用することができます。

Firefox のすべてのバージョンをサポートするとドライバーが大幅に肥大化するため、WebDriver チームは、Selenium リリースがサポートするバージョンの数を制限しています。Firefox の現在のサポート ポリシーは、現在の Firefox リリース、直前の Firefox リリース、現在の Firefox 延長サポート リリース (ESR)、および直前の ESR リリースをサポートすることです。すべてのバージョンは、Selenium プロジェクトのリリース日に計算されることに注意してください。

新しい Firefox のリリースには新しい SDK が含まれるため、Selenium プロジェクトはそれをサポートするために新しいネイティブ イベント コンポーネントをコンパイルし、それらのコンポーネントを含む新しい Selenium バージョンをリリースする必要があります。このプロジェクトは新しいリリースを Firefox の新しいバージョンのリリースにできる限り近づけるように努めていますが、これはすべてボランティアのプロジェクトであり、Mozilla は Gecko SDK を警告なしにバージョンからバージョンへと変更できる (実際に行っている!) ため、 Selenium の更新が遅れることがあります。

さらに 2 つのポイント: まず、Firefox ドライバーのアーキテクチャはこの点で独特であるため、他のブラウザーではこの動作は見られません。ただし、他のブラウザでは、更新されたブラウザ バージョンを処理するために更新されたドライバが必要であることに注意することが重要です (chromedriver.exe を参照)。第 2 に、このアーキテクチャは、マリオネットとも呼ばれる FirefoxDriver2 が完成し、Mozilla によってリリースされると、完全に変更されます。Marionette のリリースのスケジュールは Mozilla 次第なので、それに関する情報については Mozilla に連絡する必要があります。

于 2013-11-12T12:43:26.577 に答える