我使用Ubuntu 11.04和硒2.9.0下面是它是如何配置我的根POM:如何配置硒webdriver使用自定義Firefox設置進行測試?
<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)
....
由於就像我用google搜索它一樣,問題在於硒使用的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。
是有辦法做到這一點使用RemoteWebDriver API?我沒有提到,但我們使用spring來實例化網絡驅動程序,因此上述情況很難發生。另一種方法是對每個驅動程序使用帶有彈簧的工廠和工廠方法,而對於二進制路徑屬性的名稱和值則使用2個屬性,因此每個特定的驅動程序將由工廠進行適當配置。不過,如果可能的話,我會優先採用更少的代碼來做到這一點。 – 2012-02-13 14:24:10
RemoteWebDriver對我來說相當新穎。你能編輯這個問題並告訴我你如何初始化RemoteWebDriver給我?我希望我能找到一些東西。但是反正 - FirefoxDriver是RemoteWebDriver的子類... – 2012-02-13 14:56:15
我重溫了這個問題 - 現在是基本硒測試類的代碼。我打算基於瀏覽器名稱刪除基於重新初始化的一些服務定位器邏輯,因此pom.xml屬性將成爲瀏覽器名稱,如果需要,還會使用二進制路徑。工廠方法將檢查是否提供了二進制路徑,並將適當地創建和配置具體的驅動程序對象。 – 2012-02-13 15:28:43