Запуск 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;
}
}
}