ルビースクリプトを使用してヘッドレステストを実行しようとしています。基本的に、ディスプレイ: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内でブラウザーを起動することを拒否します。