Как обращаться с файлами cookie в Selenium Вебдрайвер
Файл cookie HTTP содержит информацию о пользователе и его предпочтениях. Он хранит информацию, используя пару ключ-значение. Это небольшой фрагмент данных, отправленный из веб-приложения и хранящийся в веб-браузере, пока пользователь просматривает этот веб-сайт.
Нажмите здесь, чтобы узнать о тестирование файлов cookie.
Selenium Команды запроса для файлов cookie
In Selenium Webdriver, мы можем запрашивать файлы cookie и взаимодействовать с ними с помощью встроенного метода, приведенного ниже:
Selenium Команды запроса | Результат |
---|---|
driver.manage().getCookies(); |
Вернуть список всех файлов cookie |
driver.manage().getCookieNamed(arg0); |
Вернуть конкретный файл cookie по имени |
driver.manage().addCookie(arg0); |
Создать и добавить файл cookie |
driver.manage().deleteCookie(arg0); |
Удалить определенный файл cookie |
driver.manage().deleteCookieNamed(arg0); |
Удалить определенный файл cookie по имени |
driver.manage().deleteAllCookies(); |
Удалить все куки |
Зачем обрабатывать (принимать) файлы cookie в Selenium?
Каждый файл cookie связан с именем, значением, доменом, путем, сроком действия и статусом того, является ли он безопасным или нет. Чтобы проверить клиента, сервер анализирует все эти значения в файле cookie.
После появления Тестирование веб-приложение, использующее веб-драйвер Selenium, вам может потребоваться создать, обновить или удалить файл cookie.
Например, при автоматизации приложения для онлайн-покупок вам многим необходимо автоматизировать такие тестовые сценарии, как размещение заказа, просмотр корзины, информация о платеже, подтверждение заказа и т. д.
Если файлы cookie не сохраняются, вам придется выполнять вход в систему каждый раз, прежде чем выполнять перечисленные выше тестовые сценарии. Это увеличит ваши усилия по кодированию и время выполнения.
Решение состоит в том, чтобы хранить файлы cookie в файле. Later, извлеките значения cookie из этого файла и добавьте в него текущий сеанс браузера. В результате вы можете пропустить шаги входа в систему в каждом Тестовый кейс потому что ваша сессия драйвера содержит эту информацию.
Сервер приложений теперь считает ваш сеанс браузера аутентифицированным и напрямую направляет вас на запрошенный URL-адрес.
Как обращаться с файлами cookie в Selenium
Мы будем использовать https://demo.guru99.com/test/cookie/selenium_aut.php для нашей демонстрационной цели.
Это будет двухэтапный процесс.
Шаг 1) Войдите в приложение и сохраните сгенерированный файл cookie аутентификации.
Шаг 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("https://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("https://demo.guru99.com/test/cookie/selenium_aut.php")
- Войти в приложение
- Прочтите информацию о файлах cookie, используя
driver.manage().getCookies();
- Сохраните информацию cookie, используя класс FileWriter для записи потоков символов и BufferedWriter для записи текста в файл для создания в файле Cookies.data
- Файл «Cookies.data» хранит всю информацию о файлах cookie, а также «Имя, Значение, Домен, Путь». Мы можем получить эту информацию и войти в приложение без ввода учетных данных.
- После запуска приведенного выше кода файл Cookie.data создается в структуре папок проекта, как показано на экране ниже. Откройте файл Cookie.data, вы увидите, что учетные данные для входа в AUT сохранены в формате Cookie, см. экран, выделенный ниже.
Шаг 2) Использование сохраненного файла cookie для входа в приложение.
Теперь мы получим доступ к файлу cookie, созданному на шаге 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("https://demo.guru99.com/test/cookie/selenium_aut.php"); } }
Вывод: Вы попадаете непосредственно на экран успешного входа в систему без ввода идентификатора пользователя и пароля.
ПРИМЕЧАНИЕ: Используйте принудительное обновление, если после выполнения приведенного выше сценария вы увидите страницу входа в систему.
Заключение
Таким образом, вы можете избежать ввода имени пользователя и пароля на сервере, проверяя их снова и снова для каждого теста с помощью Selenium Webdriver, и тем самым экономит много времени.