Добрый день, коллеги.
Понемногу разбираюсь с селениумом, возник вопрос как при запуске нескольких тестов сделать так, чтоб не запускалась новая сессия(новый браузер), а все выполнялось в одном?
Использую 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;
}
}
В данном примере, по понятным причинам, поочередно открываются два браузера и тесты превращаются не в последовательный тест, а два отдельных.
TestSuite, как сохранить сессию?
Автор nstreltsov, 30 сен 2011 08:14
Сообщений в теме: 2
#1
Отправлено 30 сентября 2011 - 08:14
#2
Отправлено 30 сентября 2011 - 11:33
Есть опция для реиспользования браузера, что-то типа -reuseBrowserSession, не помню точно, но в любом случае не рекомендую пользоваться этим. Мы проводили множество экспериментов в попытках заставить браузер реиспользоваться, на практике это даёт лишь кучу проблем, 10 тестов действительно ускоряются, но 100 начинают сильно глючить, то сам браузер вываливается, то просто начинает жрать память, то подвисать и т.п. Также есть проблема корректной полной очистки сессии между тестами (куки и т.п.). Лучше каждый раз запускать отдельный инстанс браузера и жить спокойно, к такому выводу мы пришли.
#3
Отправлено 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();
Аналогично с завершением теста
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();
Аналогично с завершением теста
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных