Как перезапустить браузер Firefox с помощью WebDriver, сохранив идентификатор предыдущего сеанса

В моем приложении есть ошибка, из-за которой выход из системы не работает. Мне нужно обойти эту проблему в моей автоматизации на Java с помощью WebDriver. Обходной путь — закрыть браузер, открыть его снова и открыть страницу входа.

Чтобы автоматизировать этот обходной путь, вот что я пробовал:

browserDriver.quit();            
browserDriver = new FirefoxDriver(capabilities);
browserDriver.get(loginPageURL);

Это возвращает новый идентификатор сеанса. Есть ли способ сохранить предыдущий идентификатор сеанса и установить его обратно. Я могу получить идентификатор предыдущего сеанса, используя

((RemoteWebDriver)browserDriver).getSessionId();

Я также попытался удалить все файлы cookie для текущего домена, используя следующий код, но пользователь все еще вошел в систему.

browserDriver.manage().deleteAllCookies();
browserDriver.navigate().refresh();
browserDriver.get(loginPageURL);

Ценим любую помощь в этом.


person Mihir Kamdar    schedule 20.02.2014    source источник


Ответы (2)


Насколько мне известно, после вызова метода quit() для драйвера он не сохранит идентификатор предыдущего сеанса.

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

FirefoxProfile profile = new ProfilesIni().getProfile(profilePath);
profile.setPreference("browser.cache.disk.enable", false);
profile.setPreference("browser.cache.memory.enable", false);
profile.setPreference("browser.cache.offline.enable", false);
profile.setPreference("network.http.use-cache", false);

DesiredCapabilities dc = DesiredCapabilities.firefox(); 
dc.setCapability(FirefoxDriver.PROFILE, profile); 

driver = new FirefoxDriver(dc);
driver.get(url);

Создание профиля Firefox ==> https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles

Edit-I Изменить настройку ниже в этом профиле

В «about:config» вы можете установить для «Browser.sessionstore.enabled» значение false, и в этом случае Firefox не будет восстанавливать ваш сеанс просмотра после его закрытия.

person Santoshsarma    schedule 20.02.2014

Когда вы либо используете

driver.quit(); 

or

driver.close(); 

Selenium всегда начинает новую сессию. Это означает, что он всегда направляет вас на страницу «Вход». Просто используйте приведенный ниже фрагмент кода, не нужно устанавливать возможности.

browserDriver.quit();                                    
browserDriver.get(loginPageURL); 

Вы увидите страницу входа.

person Vishwathma    schedule 17.09.2014