Файл cookie HTTP содержит информацию о пользователе и его предпочтениях. Он хранит информацию, используя пару ключ-значение. Это небольшой фрагмент данных, отправляемых из веб-приложения и хранящихся в веб-браузере, когда пользователь просматривает этот веб-сайт.
Нажмите здесь, чтобы узнать о тестировании файлов cookie .
В этом уроке мы узнаем —
- Selenium Query Команды для печенья
- Зачем обращаться с печеньем в Selenium?
- Демо: Обработка печенья в Selenium.
- Шаг 1) Хранение файлов cookie.
- Шаг 2) Использование сохраненного куки для входа в приложение.
Selenium Query Команды для печенья
В Selenium Webdriver мы можем запрашивать файлы cookie и взаимодействовать с ними с помощью встроенного метода:
driver.manage().getCookies(); // Return The List of all Cookies driver.manage().getCookieNamed(arg0); //Return specific cookie according to name driver.manage().addCookie(arg0); //Create and add the cookie driver.manage().deleteCookie(arg0); // Delete specific cookie driver.manage().deleteCookieNamed(arg0); // Delete specific cookie according Name driver.manage().deleteAllCookies(); // Delete all cookies
Зачем обращаться с печеньем в Selenium?
Каждый файл cookie связан с именем, значением, доменом, путем, сроком действия и состоянием того, является ли он безопасным или нет. Для проверки клиента сервер анализирует все эти значения в файле cookie.
При тестировании веб-приложения с использованием веб-драйвера selenium может потребоваться создать, обновить или удалить файл cookie.
Например, при автоматизации приложения для онлайн-покупок вам необходимо автоматизировать тестовые сценарии, такие как оформление заказа, просмотр корзины, информация об оплате, подтверждение заказа и т. Д.
Если файлы cookie не сохраняются, вам нужно будет выполнять действия при входе в систему каждый раз, прежде чем выполнять перечисленные выше тестовые сценарии. Это увеличит ваши усилия по написанию кода и время выполнения.
Решением является сохранение файлов cookie в файле. Позже получите значения cookie из этого файла и добавьте в него текущий сеанс браузера. В результате вы можете пропустить шаги входа в систему в каждом тестовом примере, потому что ваша сессия драйвера содержит эту информацию.
Сервер приложений теперь обрабатывает ваш сеанс браузера как аутентифицированный и напрямую перенаправляет вас на запрошенный URL-адрес.
Демо: Обработка печенья в Selenium.
Мы будем использовать http://demo.guru99.com/test/cookie/selenium_aut.php для нашей демонстрационной цели.
Это будет двухэтапный процесс.
Шаг 1) Войдите в приложение и сохраните сгенерированный куки-файл аутентификации.
Шаг 2) Использовать сохраненный файл cookie, чтобы снова войти в приложение без использования ИД пользователя и пароля.
Шаг 1) Хранение файлов cookie.
package CookieExample; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.util.Set; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.Cookie; public class cookieRead{ public static void main(String[] args) { WebDriver driver; System.setProperty("webdriver.chrome.driver","G:///chromedriver.exe"); driver=new ChromeDriver(); driver.get("http://demo.guru99.com/test/cookie/selenium_aut.php"); // Input Email id and Password If you are already Register driver.findElement(By.name("username")).sendKeys("abc123"); driver.findElement(By.name("password")).sendKeys("123xyz"); driver.findElement(By.name("submit")).click(); // create file named Cookies to store Login Information File file = new File("Cookies.data"); try { // Delete old file if exists file.delete(); file.createNewFile(); FileWriter fileWrite = new FileWriter(file); BufferedWriter Bwrite = new BufferedWriter(fileWrite); // loop for getting the cookie information // loop for getting the cookie information for(Cookie ck : driver.manage().getCookies()) { Bwrite.write((ck.getName()+";"+ck.getValue()+";"+ck.getDomain()+";"+ck.getPath()+";"+ck.getExpiry()+";"+ck.isSecure())); Bwrite.newLine(); } Bwrite.close(); fileWrite.close(); } catch(Exception ex) { ex.printStackTrace(); } } }
Объяснение кода:
- Создать экземпляр WebDriver
- Мы заходим на сайт с помощью driver.get («http://demo.guru99.com/test/cookie/selenium_aut.php»)
- Войти в приложение
- Прочитайте информацию о куки, используя
driver.manage().getCookies();
- Сохраните информацию о файлах cookie, используя класс FileWriter для записи потоков символов и BufferedWriter для записи текста в файл для создания в файл Cookies.data
- Файл «Cookies.data» хранит всю информацию о файлах cookie вместе с «Имя, Значение, Домен, Путь». Мы можем получить эту информацию и войти в приложение, не вводя учетные данные для входа.
- После запуска кода выше файл Cookie.data создается в структуре папок проекта, как показано на экране ниже. Откройте файл Cookie.data, и вы увидите, что учетные данные AUT сохранены в формате Cookie, см. Выделенный ниже экран
Шаг 2) Использование сохраненного куки для входа в приложение.
Теперь мы получим доступ к куки-файлу, сгенерированному на шаге 1, и используем его для аутентификации нашего сеанса в приложении.
package CookieExample; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.Date; import java.util.StringTokenizer; import org.openqa.selenium.Cookie; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class CookieWrite { public static void main(String[] args){ WebDriver driver; System.setProperty("webdriver.chrome.driver","G://chromedriver.exe"); driver=new ChromeDriver(); try{ File file = new File("Cookies.data"); FileReader fileReader = new FileReader(file); BufferedReader Buffreader = new BufferedReader(fileReader); String strline; while((strline=Buffreader.readLine())!=null){ StringTokenizer token = new StringTokenizer(strline,";"); while(token.hasMoreTokens()){ String name = token.nextToken(); String value = token.nextToken(); String domain = token.nextToken(); String path = token.nextToken(); Date expiry = null; String val; if(!(val=token.nextToken()).equals("null")) { expiry = new Date(val); } Boolean isSecure = new Boolean(token.nextToken()). booleanValue(); Cookie ck = new Cookie(name,value,domain,path,expiry,isSecure); System.out.println(ck); driver.manage().addCookie(ck); // This will add the stored cookie to your current session } } }catch(Exception ex){ ex.printStackTrace(); } driver.get("http://demo.guru99.com/test/cookie/selenium_aut.php"); } }
ВЫХОД: Вы попадаете прямо на экран успешного входа в систему без ввода введенного идентификатора пользователя и пароля.
ПРИМЕЧАНИЕ. Используйте жесткое обновление, если вы видите страницу входа после выполнения вышеуказанного сценария.
Вывод
Таким образом, вы можете избежать ввода имени пользователя и пароля на сервере, проверяя их снова и снова для каждого теста с помощью Selenium Webdriver, и, таким образом, экономит много времени.
Эта статья предоставлена Мангеш Вагмаре