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
Vous devez vous connecter pour publier un commentaire.
Tant que je sais que la commande java
seront lancez le navigateur Firefox sur votre ordinateur.
mais la lecture de la JavaDoc à http://selenium.googlecode.com/svn/trunk/docs/api/java/index.html j'ai réalisé qu'il y a peut être une façon de le remplacer:
RemoteWebDriver est assez nouveau pour moi. Pouvez-vous modifier la question et de me montrer comment faire de l'initialisation de l'RemoteWebDriver pour moi? J'espère que je peux trouver quelque chose. Mais de seuil, de toute façon - la FirefoxDriver est sous-classe de RemoteWebDriver...
J'ai revisité la question, maintenant, c'est le code pour la base de sélénium de la classe de test. J'ai l'intention de supprimer la relfection en fonction d'initialisation avec un service de localisation de la logique basée sur le nom du navigateur, de sorte que le pom.xml propriétés sera le nom du navigateur, et le chemin d'accès binaire si nécessaire. La méthode permettra de vérifier si le chemin d'accès binaire est fourni et permettra de créer et de configurer le béton objet de pilote de façon appropriée.
J'ai de mauvaises nouvelles pour vous ... Depuis que je ne travaille pas avec cette approche, je ne peux pas vous fournir une meilleure réponse que celle que je viens de faire...
Eh bien, OK, je vais être à l'aide de l'usine, où je peux appliquer vos conseils pour firefox initialisation du pilote. Je suppose que le procédé va être très différent pour la même chose pour les autres navigateurs , je vais donc avoir la liberté de gérer leur initialisation spécifique de nouveau dans l'usine. Merci
OriginalL'auteur Pavel Janicek