Запуск Selenium с пользовательским профилем Firefox из Eclipse

Я запускаю тесты Selenium из Eclipse, но не могу загрузить собственный профиль Firefox.

Большинство источников предлагают мне запустить Selenium Server следующим образом:

java -jar selenium-server.jar -firefoxProfileTemplate </path/to/template/>

Но при запуске моего теста из Eclipse он этого не использует - тесты будут запускаться, если Selenium Server не запущен.

Этот поток предполагает, что я могу установить профиль в конструкторе DefaultSelenium:

Selenium RC - отключение файлов cookie браузера

Но код, сгенерированный для меня Selenium IDE (плагин Firefox), не использует этот конструктор:

package com.example.tests;

import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;

public class Example extends SeleneseTestCase {
    public void setUp() throws Exception {
        setUp("http://www.example.com/", "*firefox");
    }
    public void testExample() throws Exception {
        selenium.open("/");
        selenium.click("//body");
    }
}

Где я должен установить параметры конфигурации DefaultSelenium? Или есть какой-то другой метод, который я могу использовать, чтобы загрузить свой собственный шаблон Firefox?

Спасибо! Stu

2 ответа

Решение

В приведенной выше версии кода предполагается, что вы выполняете свои тесты на локальном хосте через порт 4444, поэтому в настройке у него 2 параметра.

Чтобы настроить eclipse для его запуска, вам необходимо обновить конфигурацию запуска. То есть под

Run > Run Configurations 

Посмотрите на предмет, в котором есть селен, и добавьте конфигурацию, указанную выше, чтобы при запуске он поднял его и запустил.

Лично я просто запускаю сервер, когда начинаю работать, запуская пакетный файл и уничтожая его в конце дня.

Я создал SeleniumTestCase, который запускает / останавливает сервер до / после каждого тестового класса и запускает / останавливает экземпляр Selenium до / после каждого теста:

public class SeleniumTestCase {
    protected static Selenium selenium;
    protected static AppNavUtils appNavUtils;

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        SeleniumServerControl.getInstance().startSeleniumServer();
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        SeleniumServerControl.getInstance().stopSeleniumServer();
    }

    @Before
    public void setUp() throws Exception {
        // Replace "*chrome" with "*firefox" for Selenium > 1.0
        selenium = new DefaultSelenium("localhost", 5444, "*chrome", "http://localhost:8080/"); 
        selenium.start();
        appNavUtils = new AppNavUtils(selenium);
    }

    @After
    public void tearDown() throws Exception {
        selenium.stop();
    }  
}

SeleniumServerControl запускает и останавливает сервер:

public class SeleniumServerControl {
    private static final SeleniumServerControl instance = new SeleniumServerControl();

    public static SeleniumServerControl getInstance()
    {
        return instance;
    }

    private SeleniumServer server = null;

    protected SeleniumServerControl(){}

    public void startSeleniumServer() {
        if (server == null) {
            RemoteControlConfiguration rcc = new RemoteControlConfiguration();
            rcc.setPort(5444);
            //rcc.setFirefoxProfileTemplate(newFirefoxProfileTemplate)
            server = new SeleniumServer(rcc);
        }

        server.start();
    }

    public void stopSeleniumServer()
    {
        if (server != null) {
            server.stop();
            server = null;
        }
    }
}
Другие вопросы по тегам