2012-02-13 10 views
8

私はここでのUbuntu 11.04とセレン2.9.0を使用していますそれは私のルートポンポンに設定されている方法です。カスタムfirefoxセットアップをテスト用に使用するには、どうすればselenium webdriverを設定できますか?

<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-java</artifactId> 
    <version>2.9.0</version> 
    <scope>test</scope> 
</dependency> 

テストを実行するためにattemtingとき、私は例外を取得:

org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output: 
*** LOG addons.xpi: startup 
*** LOG addons.xpi: Ignoring file entry whose name is not a valid add-on ID: > /tmp/anonymous3804893394247066972webdriver-profile/extensions/webdriver-staging 
*** LOG addons.xpi: checkForChanges 
*** LOG addons.xpi: No changes found 

    at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:95) 
    .... 

として、私が探している限り、セレンが使用するfirefoxドライバはブラウザのバージョンと互換性がないという問題があります。 Firefoxのリリースが頻繁に更新されることを念頭に置いて、私のローカルテスト環境を維持するのは難しいでしょう。

したがって、最新の互換性のあるバージョンで静的なFirefoxをインストールし、デフォルトのFirefoxを維持しながら(それを削除しないでください)、セレニウムを使用することに決めました。

したがって、私はセレン構成をセットアップして静的なFirefoxで動作させる方法がわかりません。おそらく私はドライバが使用するfirefoxバイナリへのパスを受け取るように自分のアプリを設定する必要がありますか?他に何かが必要なのかどうか知りたい。

**編集

私は適切なwebdriverを初期化するために構成プロパティを使用しています:

public abstract class SeleniumTestBase { 

    ... 

    public final void setUp() throws Exception { 
     String driverClass = getConfigurationProperty("selenium.webDriverClass"); 
     driver = (WebDriver) Class.forName(driverClass).newInstance(); 
     ... 
     doSetUp(); 
    } 

    public void doSetUp() { 
    } 

    ... 
} 

"selenium.webDriverClass"プロパティは、したがって、異なるプロファイルが異なる値を持つことができるのpom.xmlで管理可能です。現在、それはインスタンス化されるドライバクラスのFQNです。

答えて

15

限り、私はjavaコマンド

WebDriver driver = new FirefoxDriver(); 

がコンピュータにインストールFirefoxブラウザを実行することを知っています。

しかしhttp://selenium.googlecode.com/svn/trunk/docs/api/java/index.htmlでJavadocを読んで、私はそれを上書きする方法方法があることを実現:

FirefoxBinary binary = new FirefoxBinary(new File("path/to/binary")); 
FirefoxProfile profile = new FirefoxProfile(); 
WebDriver driver = new FirefoxDriver(binary, profile); 
+0

はRemoteWebDriverのAPIを使用してこれを行う方法はありますか?私は言及しませんでしたが、我々はWebドライバをインスタンス化するために春を使用しているので、上記はほとんど起こりません。もう1つの方法は、ドライバごとにバネ付きのファクトリメソッドとファクトリメソッドを使用し、バイナリパスプロパティの名前と値の2つのプロパティを使用して、それぞれの特定のドライバを工場で適切に構成する方法です。それでも、できるだけ少ないコードでこれを行うことを前提にしています。 –

+0

RemoteWebDriverは私には新しくありません。質問を編集して、私にRemoteWebDriverを初期化する方法を教えてください。私は何かを見つけることができることを願っています。でも、FirefoxDriverはRemoteWebDriverのサブクラスです。 –

+0

私は質問を再訪しました - 今、ベースのセレンテストクラスのコードがあります。私は、ブラウザー名に基づいていくつかのサービスロケーターロジックを使用して、再初期化に基づく初期化を削除する予定です。したがって、pom.xmlプロパティーはブラウザー名になり、必要に応じてバイナリー・パスになります。ファクトリメソッドは、バイナリパスが提供されているかどうかをチェックし、具体的なドライバオブジェクトを適切に作成して設定します。 –

関連する問題