我正在使用Ubuntu 11.04和Selenium 2.9.0,这是在根pom中进行配置的方式:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.9.0</version> <scope>test</scope> </dependency>
尝试运行测试时,出现异常:
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) ....
就我而言,问题是selenium使用的Firefox驱动程序与浏览器版本不兼容。考虑到firefox发布的频繁更新,很难维护我的本地测试环境。
因此,我决定安装一个具有我所知的最新兼容版本的静态Firefox,并与它一起使用selenium,同时保留默认的Firefox(我不能删除它)。
因此,我不确定如何设置selenium配置以使其与静态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。
"selenium.webDriverClass"
只要我知道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);