Selenium - Kuinka palauttaa evästeet uudessa selainikkunassa

Oletetaan, että meidän on testattava seuraava skenaario:

1. Siirry kirjautumissivulle ja kirjaudu sovellukseen
2. Sulje selain
3. Avaa selain ja siirry kirjautumissivulle - käyttäjän ei pitäisi nähdä kirjautumislomaketta ja hänen pitäisi olla jo kirjautuneena sisään.

Ensimmäisen kirjautumisen yhteydessä evästeet tallennetaan selaimeen. Kun selainikkuna suljetaan, WebDriverissa kaikki istunnon tiedot ja evästeet poistetaan, joten yllä olevan skenaarion testaaminen on mahdotonta.


Onneksi WebDriverilla on toimintoja lukea evästeet selaimelta ennen sen sulkemista ja palauttaa evästeet uudessa selainikkunassa.

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();
} }