セレンWebドライバーを介してFirefoxを実行しているように見える理由を見つける方法について、誰かが何か考えを持っているかどうか疑問に思っていました。実行するとどうなりますか:
self.driver=webdriver.Firefox()
デスクトップに空白のダイアログが表示されます。Redhat 5.6 で実行しており、セレンのバージョンは 2.21.3 です。できる限りコードをデバッグしましたが、firefox_binary モジュール内の次のコードで空白のダイアログを表示した後、コードがフリーズすると判断できます。
Popen([self._start_cmd, "-slient"], stdout=PIPE, stderr=STDOUT, env=self._filefox_env).wait()
コマンドプロンプトを開き、上記のコマンドを手動で実行しましたが、そのような空白のダイアログは表示されません。これは、Firefoxのエラーではないと思います。このエラーが表示される場所が見つかりません。何か案は?
アップデート
centos 6 をインストールし、firefox 10.0.6 をインストールしました。Selenium Webdriver はそのバージョンで動作しました
アップデート
centos 6 を使用する以外に、この問題を redhat でも解決する必要があるため、詳細と私が見つけたものを以下に示します。解決する必要があるため、これに賞金をかけます。
これについてもう少し掘り下げたところ、問題は32ビットライブラリを使用するセレンにあることがわかりました。Firefox ESR 10.0.6 (64 ビット) を使用して、Redhat Enterprise Linux Server リリース 5.6 (x86_64) で Selenium バージョン 2.25.0 を使用しています。firefoxBinary クラスの _start_from_profile_path メソッドを変更して、問題がどこにあるかを確認しました。
p=open("/tmp/ffoutput.txt", "w+")
Popen([self._start_cmd, "-silent"], stdout=p, stderr=STDOUT, env=self._firefox_env).communicate()
/tmp/ffoutput.txt を追跡したところ、セレンが 32 ビット ライブラリを使用しようとしていることがわかりました。
Failed to dlopen /usr/lib/libX11.so.6
dlerror says: /usr/lib/libX11.so.6: wrong ELF class: ELFCLASS32
このメッセージが継続的に発生し、Firefox がハングして空白のダイアログが表示されます。この問題をググったところ、不満を言う人もいましたが、解決策はありませんでした (32 ビット ライブラリを移動した後、64 ビット ライブラリを 32 ビット ライブラリ ディレクトリにソフトリンクしようとしましたが、これにより geko がクラッシュし、継続的なエラーを /dev に送信しようとしました)。 /null しかし、これは何も解決しませんでした)。