統合テストでは、セレンと、Chrome、Firefox、および IE 用のさまざまな (バージョンの) ドライバーを使用しています。ビルド サーバーには UI (または X) はありません。つまり、ヘッドレスです。仮想画面 (フレームバッファ) には Xvfb を使用しています。
X (UI) を持つローカル マシンで実行してもエラーは発生しません。
私は十分に簡単なテストクラスを持っています:
import java.io.IOException;
import java.net.URL;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
public class Test {
public static void main(String[] args) throws IOException, InterruptedException {
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:9515"), DesiredCapabilities.chrome());
driver.get("http://www.google.com");
Thread.sleep(2000);
driver.quit();
}
次に、ポート 9515 で chromedriver を起動します。例外は次のとおりです。
abc@xyz:~/test$ java -cp $CLASSPATH Test
(google-chrome:22323): Gtk-WARNING **: cannot open display:
[0124/165659:ERROR:ipc_sync_channel.cc(378)] Canceling pending sends
chrome/test/automation/proxy_launcher.cc:107: Failure
Value of: app_launched
Actual: 5
Expected: AUTOMATION_SUCCESS
Which is: 0
Error while awaiting automation ping from browser process
[0124/165659:ERROR:automation_proxy.cc(319)] Channel error in AutomationProxy.
[0124/165659:ERROR:ipc_sync_channel.cc(378)] Canceling pending sends
[0124/165659:ERROR:ipc_sync_channel.cc(378)] Canceling pending sends
Exception in thread "main" org.openqa.selenium.WebDriverException: Unable to either launch or connect to Chrome. Please check that ChromeDriver is up-to-date. Using Chrome binary at: /opt/google/chrome/google-chrome (WARNING: The server did not provide any stacktrace information); duration or timeout: 223 milliseconds
Build info: version: '2.9.0', revision: '14289', time: '2011-10-20 23:22:17'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.32-28-server', java.version: '1.6.0_26'
Driver info: driver.version: RemoteWebDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:147)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:113)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:417)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:115)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:76)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:84)
at Test.main(Test.java:63)
私は広範囲にグーグルで検索しており、さまざまなアプローチを試しました。これを 2 日以上解決しようとしてきたので、細部を見落としている可能性があります。
私は使用しています:
$ uname -a
Linux bryant 2.6.32-28-server #55-Ubuntu SMP Mon Jan 10 23:57:16 UTC 2011 x86_64 GNU/Linux
google-chrome-stable 24.0.1312.56-r177594 chromedriver_linux64_23.0.1240.0、chromedriver_linux64_26.0.1383.0
これに関するアイデアはありますか?