Как я могу настроить селен вебдрайвер для использования пользовательских настроек Firefox для тестов? - PullRequest
8 голосов
/ 13 февраля 2012

Я использую Ubuntu 11.04 и selenium 2.9.0. Вот как это настроено в моей корневой поме:

<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)
    ....

Насколько я могу судить, проблема в том, что драйвер firefox, который использует selenium, несовместим с версией браузера. Учитывая частые обновления выпусков Firefox, будет сложно поддерживать мою локальную тестовую среду.

Поэтому я решил установить статический Firefox с последней известной мне совместимой версией и использовать с ним селен, сохраняя мой Firefox по умолчанию (я не должен его удалять).

Итак, я не уверен, как настроить мою конфигурацию селена, чтобы она работала со статическим firefox. Возможно, я должен настроить свое приложение, чтобы получить путь к двоичному файлу firefox для использования драйвером? Я хотел бы знать, нужно ли что-нибудь еще.

** Редактировать

Я использую свойства конфигурации для инициализации правильного веб-драйвера:

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 класса драйвера, который должен быть создан.

1 Ответ

15 голосов
/ 13 февраля 2012

Пока я знаю, что команда Java

WebDriver driver = new FirefoxDriver();

запустит установленный браузер Firefox на вашем компьютере.

но читая JavaDoc на http://selenium.googlecode.com/svn/trunk/docs/api/java/index.html Я понял, что может быть способ переопределить его:

FirefoxBinary binary = new FirefoxBinary(new File("path/to/binary"));
FirefoxProfile profile = new FirefoxProfile();
WebDriver driver = new FirefoxDriver(binary, profile);
...