2012-02-13 73 views
8

我使用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。

回答

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?我沒有提到,但我們使用spring來實例化網絡驅動程序,因此上述情況很難發生。另一種方法是對每個驅動程序使用帶有彈簧的工廠和工廠方法,而對於二進制路徑屬性的名稱和值則使用2個屬性,因此每個特定的驅動程序將由工廠進行適當配置。不過,如果可能的話,我會優先採用更少的代碼來做到這一點。 – 2012-02-13 14:24:10

+0

RemoteWebDriver對我來說相當新穎。你能編輯這個問題並告訴我你如何初始化RemoteWebDriver給我?我希望我能找到一些東西。但是反正 - FirefoxDriver是RemoteWebDriver的子類... – 2012-02-13 14:56:15

+0

我重溫了這個問題 - 現在是基本硒測試類的代碼。我打算基於瀏覽器名稱刪除基於重新初始化的一些服務定位器邏輯,因此pom.xml屬性將成爲瀏覽器名稱,如果需要,還會使用二進制路徑。工廠方法將檢查是否提供了二進制路徑,並將適當地創建和配置具體的驅動程序對象。 – 2012-02-13 15:28:43

相關問題