Перейти к содержимому

Фотография

TestSuite, как сохранить сессию?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 nstreltsov

nstreltsov

    Активный участник

  • Members
  • PipPip
  • 116 сообщений
  • ФИО:Стрельцов Николай Игоревич
  • Город:Москва


Отправлено 30 сентября 2011 - 08:14

Добрый день, коллеги.
Понемногу разбираюсь с селениумом, возник вопрос как при запуске нескольких тестов сделать так, чтоб не запускалась новая сессия(новый браузер), а все выполнялось в одном?
Использую junit4
пример, есть два тестовых класса, назовем их условно Test1 и Test2, в данный момент у меня в обеих классах есть методы setUp, test и TearDown
в данный момент в каждом setUp создается новая сессия.
Запускаю след образом
public class AllTests {

public static test suite() {
TestSuite suite = new TestSuite(AllTests.class.getName());
//$JUnit-BEGIN$
suite.addTestSuite(Test1.class);
suite.addTestSuite(Test2.class);
//$JUnit-END$
return suite;
}

}
В данном примере, по понятным причинам, поочередно открываются два браузера и тесты превращаются не в последовательный тест, а два отдельных.
  • 0

#2 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 30 сентября 2011 - 11:33

Есть опция для реиспользования браузера, что-то типа -reuseBrowserSession, не помню точно, но в любом случае не рекомендую пользоваться этим. Мы проводили множество экспериментов в попытках заставить браузер реиспользоваться, на практике это даёт лишь кучу проблем, 10 тестов действительно ускоряются, но 100 начинают сильно глючить, то сам браузер вываливается, то просто начинает жрать память, то подвисать и т.п. Также есть проблема корректной полной очистки сессии между тестами (куки и т.п.). Лучше каждый раз запускать отдельный инстанс браузера и жить спокойно, к такому выводу мы пришли.
  • 0

#3 nstreltsov

nstreltsov

    Активный участник

  • Members
  • PipPip
  • 116 сообщений
  • ФИО:Стрельцов Николай Игоревич
  • Город:Москва


Отправлено 06 октября 2011 - 08:54

Решил проблему, если кому будет интересно, вот код
public class SeleniumSingl
{
private static SeleniumSingl instance;
private Selenium selenium;

private SeleniumSingl()
{
selenium = new DefaultSelenium("localhost", 4444, "*firefox", "сайт");
selenium.start();
}

public static SeleniumSingl getInstance()
{
if (null == instance)
{
instance = new SeleniumSingl();
}
return instance;
}

public Selenium getSelen()
{
return selenium;
}
public void tearDown() {
selenium.stop();

}

Вызывается из любого класса в начале теста
selenium = SeleniumSingl.getInstance().getSelen();

Аналогично с завершением теста
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных