7

セレン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 しかし、これは何も解決しませんでした)。

4

1 に答える 1

3

Seleniumhttp ://code.google.com/p/selenium/issues/detail ?id=2852で報告されているこの問題を参照している場合

64ビットLinuxディストリビューションでの回避策は、次のコマンドを発行することです。

sudo mv /usr/lib/libX11.so.6 /usr/lib/libX11.so.6.old
sudo ln -s /usr/lib64/libX11.so.6.3.0 /usr/lib/libX11.so.6

これは私の箱で私のために働いた。

于 2012-07-28T13:33:40.417 に答える