6

ルビースクリプトを使用してヘッドレステストを実行しようとしています。基本的に、ディスプレイ:1でXvfbを実行してから、Watir::Browser.new(:firefox)watir-webdriverを使用して起動します。

これは、スクリプトをrootとして実行する場合にうまく機能します。つまり、x11vncを実行して、スクリプトがブラウザーを実行し、ブラウザーと対話するのを見ることができます。

問題は、Railsアプリからこのrubyスクリプトを呼び出すことができる必要があり、rootとして実行しないようにする必要があることです...通常のユーザーとしてコマンドラインからスクリプトを実行しようとすると、Xvfbが1で起動します。いつものように、しかしWatirはブラウザを起動しません...それは最終的に60秒後にタイムアウトします。VNC経由で接続すると、マウスカーソルで黒い画面が表示されます。

コマンドラインからすべてを実行できます。Xvfbを起動firefox --display=:1してから起動するとブラウザが起動するので、Seleniumの問題である必要があります。

簡単に言うと、Selenium / Webdriverは、スクリプトをrootとして実行しない限り、Xvfb内でブラウザーを起動することを拒否します。

4

3 に答える 3

4
  • 解決済み-編集*-申し訳ありませんが、質問に答えることができませんでしたが、どうやら私のアカウントはまだそれを行うには新しすぎます。

解決しました!あなたが質問をした後、このようなことがどのように解決するのか驚くべきことです...

理由を知りたい人のために、私がしなければならないことがいくつかあります...

1)問題のユーザーが作業中のホームディレクトリを持っていることを確認します(www-dataはデフォルトではありませんでした...そのホームディレクトリはrootによって所有されていました)

2)コマンドラインからXvfbを起動し、次にコマンドラインからfirefoxを起動します(スクリプト内からではありません)。これにより、ユーザーのホームフォルダーに通常の.dbus、.gconfなどのフォルダーが追加されます。

3)大幅な遅延が発生し、「firefox-binの構成情報の読み込みまたは保存中にエラーが発生しました」というエラーメッセージが表示された場合は、ユーザーのホームディレクトリにある.dbusフォルダーを削除します。

4)#2を再試行します-以前に構成エラーが発生した場合は、これで解消されます。

5)スクリプトを再実行してみてください。

これは私にとって魅力のように機能したので、Webアプリ内からXvfbとwatir-webdriverを実行するときに同様の問題が発生する場合は、試してみてください。

ウェブ上で最高のQ&Aサイトを提供してくれたすべての人に感謝します...この場所は、私が言及するよりも多くの時間を節約してくれました。

注:ユーザーは、回答として投稿する方法がわからなかったため、最初にこの修正を質問に入力しました。それは後で、ある善意のある人によって質問から編集されましたが、答えとして追加されることはありませんでした。

于 2014-07-01T20:05:15.537 に答える
1

こんにちは、このリンクがあなたの助けになるかどうかわかりません。これは私を大いに助けました。起動/再起動時にwatir-webdriverを自動的に実行する必要がありました-それは私のために働きました(コメントも読んでください)。

于 2011-06-21T07:21:41.257 に答える
0

XvfbのRubyラッパーも確認する必要がありますhttp://rubygems.org/gems/headless

于 2011-12-28T06:31:52.043 に答える