używam Ubuntu 11,04 i selen 2.9.0 Oto jak to jest skonfigurowany w moim głównym pom:Jak skonfigurować selenowego webdrivera do używania niestandardowej konfiguracji firefoxa do testów?
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.9.0</version>
<scope>test</scope>
</dependency>
Kiedy attemting aby uruchomić test, otrzymuję wyjątek:
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)
....
jako o ile go zgłosiłem, problemem jest to, że sterownik firefox, którego używa selen, jest niezgodny z wersją przeglądarki. Mając na uwadze częste aktualizacje wydań firefox, trudno będzie utrzymać moje lokalne środowisko testowe.
Dlatego postanowiłem zainstalować statyczny firefox z najnowszą znaną mi wersją kompatybilną i używać selenu przy zachowaniu mojego domyślnego firefoxa (nie mogę go usunąć).
Nie jestem pewien, jak skonfigurować konfigurację selenu, aby działał ze statycznym firefoxem. Prawdopodobnie muszę skonfigurować moją aplikację, aby otrzymać ścieżkę do pliku binarnego firefox, z której sterownik będzie korzystał? Chciałbym wiedzieć, czy coś jeszcze jest potrzebne.
** Edycja
Używam właściwości konfiguracyjnych zainicjować właściwą 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() {
}
...
}
Obiekt "selenium.webDriverClass"
jest do opanowania przez pom.xml zatem różne profile mogą mieć różne wartości. Obecnie jest to FQN klasy sterownika, który ma być utworzony.
czy istnieje sposób, aby to zrobić za pomocą interfejsu API RemoteWebDriver? Nie wspomniałem, ale używamy sprężyny, aby utworzyć sterownik sieciowy i dlatego powyższe może się nie zdarzyć. Innym sposobem jest użycie metod fabrycznych i fabrycznych ze sprężyną dla każdego sterownika i 2 poprawek dla nazwy i wartości właściwości ścieżki binarnej, aby każdy konkretny sterownik był odpowiednio skonfigurowany przez producenta. Mimo wszystko staram się to zrobić, jeśli to możliwe, z mniejszą ilością kodu. –
RemoteWebDriver jest dla mnie nowością. Czy możesz edytować pytanie i pokazać mi, jak zainicjować RemoteWebDriver do mnie? Mam nadzieję, że coś mogę znaleźć. Ale tak czy inaczej - FirefoxDriver jest podklasą RemoteWebDriver ... –
Powróciłem do pytania - tam jest kod podstawowej klasy selenu. Planuję usunąć inicjowanie oparte na relfection z pewną logiką service-lokalizatora opartą na nazwie przeglądarki, więc właściwości pom.xml będą nazwą przeglądarki, a ścieżka binarna, jeśli będzie potrzebna. Metoda fabryczna sprawdzi, czy ścieżka binarna jest dostępna i odpowiednio utworzy i skonfiguruje obiekt sterownika betonu. –