Selenium в режиме -browserSessionReuse запускает новый браузер - PullRequest
3 голосов
/ 23 мая 2011

Я пробую режим -browserSessionReuse Selenium, чтобы ускорить мои тесты, но я заметил странное поведение.

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

Я полагаю, что время ожидания для "старого" браузера истекло, но я не понимаю, почему. Есть ли способ избежать этой проблемы?

(протестировано с Selenium1 и Selenium2)

Заранее спасибо

Victor

Ответы [ 2 ]

5 голосов
/ 24 мая 2011

Отвечая на мой вопрос.

Selenium кэширует сеансы в режиме -browserSessionReuse, чтобы повторно использовать его в следующих тестах, но у них есть максимальное время простоя до истечения в классе BrowserSessionFactory:

private static final long DEFAULT_CLEANUP_INTERVAL = 300000; // 5 minutes.
private static final long DEFAULT_MAX_IDLE_SESSION_TIME = 600000; // 10 minutes

Конструктор получает параметр для очистки, который по умолчанию равен TRUE.

public BrowserSessionFactory(BrowserLauncherFactory blf) {
        this(blf, DEFAULT_CLEANUP_INTERVAL, DEFAULT_MAX_IDLE_SESSION_TIME, true);
    }

AFAIK Нет способа изменить его с помощью параметра Selenium, единственный способ - изменить исходный код Selenium и скомпилировать его снова. Вот что я делаю

0 голосов
/ 02 октября 2013

Чтобы поделиться сеансами браузера в Selenium2TestCase, вы должны установить sessionStrategy => 'shared' в первоначальной настройке браузера:

public static $browsers = array(
    array(
        '...
        'browserName' => 'iexplorer',
        'sessionStrategy' => 'shared',
        ...
    )
);

Альтернатива (по умолчанию) - 'isolated'.

...