Selenium - Comment restaurer les cookies dans la nouvelle fenêtre du navigateur

Supposons que nous devions tester le scénario suivant:

1. Accédez à la page de connexion et connectez-vous à l'application
2. Fermez le navigateur
3. Ouvrez le navigateur et accédez à la page de connexion - l'utilisateur ne doit pas voir le formulaire de connexion et doit être déjà connecté.

Lors de la première connexion, des cookies sont stockés dans le navigateur. Dans WebDriver, lorsque la fenêtre du navigateur est fermée, toutes les données de session et les cookies sont supprimés, de sorte que le test du scénario ci-dessus devient impossible.


Heureusement, WebDriver dispose d'une fonctionnalité permettant de lire les cookies du navigateur avant de le fermer, puis de restaurer les cookies dans la nouvelle fenêtre du navigateur.

import org.openqa.selenium.By; import org.openqa.selenium.Cookie; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import java.util.Set; public class CookieTest {
WebDriver driver;
@Test
public void login_state_should_be_restored() {
driver = new FirefoxDriver();

driver.get('http://www.example.com/login');
driver.findElement(By.id('username')).sendKeys('admin');
driver.findElement(By.id('password')).sendKeys('12345');
driver.findElement(By.id('login')).click();

Assert.assertTrue(


driver.findElement(By.id('welcome')).isDisplayed());

//Before closing the browser, read the cookies
Set allCookies = driver.manage().getCookies();

driver.close();

//open a new browser window
driver = new FirefoxDriver();

//restore all cookies from previous session
for(Cookie cookie : allCookies) {

driver.manage().addCookie(cookie);
}

driver.get('http://www.example.com/login'); //Login page should not be disaplyed
Assert.assertTrue(


driver.findElement(By.id('welcome')).isDisplayed());

driver.close();
} }