Comment puis-je configurer selenium webdriver pour personnaliser firefox setup pour les tests?

J'utilise Ubuntu 11.04 et le sélénium 2.9.0 Ici est de savoir comment il est configuré dans ma racine pom:

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

Quand attemting l'exécution d'un test, j'obtiens une exception:

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)
    ....

Autant que j'ai googlé, le problème est que le firefox pilote que le sélénium utilise est incompatible avec la version du navigateur. Ayant à l'esprit les fréquentes mises à jour de firefox versions, il sera difficile de maintenir mon environnement de test local.

Par conséquent, j'ai décidé d'installer un statique firefox avec le dernier connu de moi version compatible et utiliser le sélénium avec elle, tout en préservant mon par défaut de firefox (je ne dois pas l'enlever).

Donc, je ne suis pas sûr de savoir comment configurer mon sélénium de configuration afin de la faire fonctionner avec la statique firefox. Probablement je dois configurer mon appli pour recevoir le chemin d'accès à la firefox binaire pour le pilote à utiliser? Je voudrais savoir si autre chose est également nécessaire.

** Edit

Je suis en utilisant les propriétés de configuration pour initialiser le bon 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() {
    }

    ...
}

La "selenium.webDriverClass" propriété est gérable par l'pom.xml donc des profils différents peuvent avoir des valeurs différentes. Actuellement, il est le FQN de la classe du pilote à être instancié.

OriginalL'auteur Ivaylo Slavov | 2012-02-13