Вас когда-нибудь запрашивали учетные данные при доступе к веб-сайту в браузере? Позвольте нам понять, почему нас просят ввести учетные данные при доступе к нескольким веб-сайтам. Эта статья в основном посвящена введению во всплывающие окна аутентификации на веб-сайте и различным способам их обработки с помощью Selenium. Прежде чем мы углубимся и посмотрим, как обрабатывать всплывающее окно входа в Selenium WebDriver , давайте сначала посмотрим, как выглядит всплывающее окно аутентификации на веб-сайте.
Давайте перейдем к образцу веб-сайта. При входе на веб-сайт пользователю будет предложено войти во всплывающее окно. Пользователь должен ввести имя пользователя и пароль для дальнейшей навигации по сайту. Ниже приведен скриншот всплывающего окна аутентификации, которое запрашивается на веб-сайте.
Почему это происходит?
Некоторые веб-сайты, имеющие доступ к серверам, требуют учетных данных для дальнейшей навигации. Следовательно, при доступе к этим веб-сайтам пользователю будет предложено во всплывающем окне аутентификации ввести свои учетные данные.
В этом Selenium WebDriver В учебном пособии по Java мы рассмотрим различные способы обработки всплывающих окон входа в Selenium WebDriver с использованием Java.
Как обработать всплывающее окно входа В Selenium WebDriver?
Для обработки всплывающих окон входа в Selenium WebDriver с использованием Java мы можем использовать любой из приведенных ниже способов.
- Передайте учетные данные в URL-адресе веб-страницы.
- Использование AutoIt.
- Использование бета-версии Selenium 4.
Давайте теперь подробно разберемся в каждом методе.
Обработка всплывающего окна входа в Selenium WebDriver путем передачи имени пользователя и пароля в URL-адресе
Всплывающее окно базовой аутентификации аналогично оповещению эти всплывающие окна появляются при переходе браузера на определенную веб-страницу. Чтобы обработать всплывающее окно базовой аутентификации, мы можем передать имя пользователя и пароль вместе с URL-адресом веб-страницы.
Синтаксис для обработки этого всплывающего окна входа в систему следующий:
https://username: [электронная почта защищена]
Когда появится всплывающее окно входа в систему, мы вводим имя пользователя как “admin” и пароль как “admin”, а затем входим в систему. Таким образом, пользователь будет успешно авторизован на веб-сайте.
Ниже приведен код для обработки основного всплывающего окна входа в систему на веб-странице путем передачи имени пользователя и пароля в URL-адресе веб-страницы.
package Pages; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class PopUp { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\\Users\\Shalini\\Downloads\\chromedriver\\chromedriver.exe"); //Instantiate the webdriver WebDriver driver = new ChromeDriver(); //Set the username String username = "admin"; //Set the password String password = "admin"; String URL = "https://" +username +":" +password +"@"+ "the-internet.herokuapp.com/basic_auth"; driver.get(URL); driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); String title = driver.getTitle(); System.out.println("The page title is "+title); String text = driver.findElement(By.tagName("p")).getText(); System.out.println("The test present in page is ==> "+text); driver.close(); driver.quit(); } }
Как только учетные данные будут введены правильно, пользователь будет успешно аутентифицирован, и на веб-сайте появится соответствующее сообщение.
Обработка всплывающего окна входа в Selenium WebDriver с помощью AutoIt
AutoIt – это язык сценариев, который широко используется для автоматизации приложений с графическим интерфейсом и может автоматизировать задачи, связанные с взаимодействием клавиатуры и мыши. Он широко используется для автоматизации задач, связанных с загрузкой файлов, загрузкой файлов, обработкой всплывающих окон аутентификации и т.д. Теперь давайте установим AutoIt и используем его для обработки всплывающего окна входа в систему на веб-странице.
- Скачайте AutoIt с официального сайта AutoIt или по ссылке AutoIt для скачивания .
- Перейдите в установленную папку и откройте редактор AutoIt.
- В редакторе введите приведенный ниже код, чтобы отправить имя пользователя и пароль для обработки всплывающего окна аутентификации на веб-сайте.
Send("admin") Send("(TAB)") Send("admin") Send("(ENTER)")
- Сохраните файл с расширением .au3.
- Теперь, чтобы преобразовать скрипт в исполняемый файл, щелкните правой кнопкой мыши на сохраненном файле и выберите команду Скомпилировать скрипт. Вы увидите, что исполняемый файл был создан.
- В среде IDE задайте путь к файлу драйвера, введите URL-адрес веб-страницы и введите путь к исполняемому файлу AutoIt, как показано ниже.
package Pages; import java.io.IOException; import java.util.concurrent.TimeUnit; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class PopUpAutoIT { public static void main(String[] args) throws IOException { System.setProperty("webdriver.chrome.driver", "C:\\Users\\Shalini\\Downloads\\chromedriver\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.manage().window().maximize(); String URL ="http://the-internet.herokuapp.com/basic_auth"; driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); Runtime.getRuntime().exec("C:\\Users\\Shalini\\Desktop\\Login.exe"); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } driver.close(); } }
До сих пор мы видели различные способы обработки всплывающих окон аутентификации в Selenium. Чтобы перейти на продвинутый уровень, давайте попробуем то же самое, используя новые функции последней бета-версии Selenium 4.
Обработка всплывающего окна входа в Selenium WebDriver с использованием бета-версии Selenium 4
В последней версии Selenium представлен класс драйвера Chromium, который имеет два метода, а именно get Dev Tools() и executeCdpCommand() для доступа к инструментам разработки chrome.
Метод get Dev Tools() возвращает новый объект DevTools, который позволяет пользователю отправлять встроенные команды Selenium. В предыдущих версиях Selenium мы использовали метод передачи учетных данных в URL веб-страницы для обработки основного всплывающего окна входа на веб-сайте. Теперь в бета-версии Selenium 4 мы можем легко настроить базовую аутентификацию, отправив дополнительные HTTP-заголовки.
Ниже приведен фрагмент кода обработки всплывающего окна входа в систему.
import com.google.common.util.concurrent.Uninterruptibles; import com.sun.xml.messaging.saaj.util.Base64; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chromium.ChromiumDriver; import org.openqa.selenium.devtools.DevTools; import org.openqa.selenium.devtools.v86.network.Network; import org.openqa.selenium.devtools.v86.network.model.Headers; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import java.util.HashMap; import java.util.Map; import java.util.Optional; import java.util.concurrent.TimeUnit; import org.openqa.selenium.WebDriver; import org.openqa.selenium.*; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.*; import java.time.Duration; import java.util.concurrent.TimeUnit; import com.google.common.util.concurrent.Uninterruptibles; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class Auth { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\\Users\\Shalini\\Downloads\\chromedriver\\chromedriver.exe"); ChromeDriver driver = new ChromeDriver(); DevTools dev = driver.getDevTools(); dev.createSession(); dev.send(Network.enable(Optional.empty(), Optional. empty(), Optional. empty())); Map map = new HashMap<>(); map.put("Authorization", "Basic " + new String(new Base64().encode("admin:admin".getBytes()))); dev.send(Network.setExtraHTTPHeaders(new Headers(map))); driver.navigate().to("https://the-internet.herokuapp.com/basic_auth"); Uninterruptibles.sleepUninterruptibly(10, TimeUnit.SECONDS); driver.close(); } }
Lambda Test предоставляет онлайн-облачную платформу для выполнения Selenium automation testing с легкостью в облачной Selenium Grid. Lambda Test предлагает крупнейшую платформу для кросс-браузерного тестирования веб- и мобильных устройств, которая дает вам возможность тестировать более 2000 различных комбинаций браузера и операционной системы.
Как только вы войдете на веб-сайт, вам будет предоставлено имя пользователя и ключ доступа, которые можно использовать для запуска ваших скриптов в облаке. Вы можете получить имя пользователя и ключ доступа из раздела Профиль .
Ниже приведен фрагмент кода для выполнения всплывающего теста входа в систему в лямбда-тесте.
package Pages; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class Demo { String username = "USERNAME"; //Enter your username String accesskey = "ACCESSKEY"; //Enter your accesskey static RemoteWebDriver driver = null; String gridURL = "@hub.lambdatest.com/wd/hub"; boolean status = false; @BeforeTest @Parameters("browser") public void setUp(String browser)throws MalformedURLException { if(browser.equalsIgnoreCase("chrome")) { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("browserName", "chrome"); //To specify the browser capabilities.setCapability("version", "70.0"); //To specify the browser version capabilities.setCapability("platform", "win10"); // To specify the OS capabilities.setCapability("build", "AuthPopUp"); //To identify the test capabilities.setCapability("name", "AuthPopUpTest"); capabilities.setCapability("network", true); // To enable network logs capabilities.setCapability("visual", true); // To enable step by step screenshot capabilities.setCapability("video", true); // To enable video recording capabilities.setCapability("console", true); // To capture console logs try { driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities); } catch (MalformedURLException e) { System.out.println("Invalid grid URL"); } catch (Exception e) { System.out.println(e.getMessage()); } } else if(browser.equalsIgnoreCase("Firefox")) { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("browserName", "Firefox"); //To specify the browser capabilities.setCapability("version", "76.0"); //To specify the browser version capabilities.setCapability("platform", "win10"); // To specify the OS capabilities.setCapability("build", " AuthPopUp"); //To identify the test capabilities.setCapability("name", " AuthPopUpTest"); capabilities.setCapability("network", true); // To enable network logs capabilities.setCapability("visual", true); // To enable step by step screenshot capabilities.setCapability("video", true); // To enable video recording capabilities.setCapability("console", true); // To capture console logs try { driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities); } catch (MalformedURLException e) { System.out.println("Invalid grid URL"); } catch (Exception e) { System.out.println(e.getMessage()); } } } @Test public void Login() { String username = "admin"; String password = "admin"; String URL = "https://" +username +":" +password +"@"+ "the-internet.herokuapp.com/basic_auth"; driver.get(URL); driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); String title = driver.getTitle(); System.out.println("The page title is "+title); String text = driver.findElement(By.tagName("p")).getText(); System.out.println("The test present in page is ==> "+text); } @AfterTest public void tearDown() { driver.quit(); } }
Ниже приведен фрагмент кода для выполнения всплывающего теста входа в систему в лямбда-тесте.
Чтобы запустить этот тест на платформе Lambda Test, пожалуйста, выполните указанные ниже действия:
- Щелкните правой кнопкой мыши на TestNG.xml что вы создали в своей ИДЕЕ.
- Нажмите Запустить как–> TestNG Suite. Теперь тест будет выполняться на платформе Lambda Test platform.
- Как только ваши тесты будут выполнены, перейдите в свою учетную запись Lambda Test в браузере и нажмите Панель инструментов на левой боковой панели.
На этой странице представлен обзор тестов, выполняемых на платформе.
- Затем щелкните ярлык Автоматизации на левой боковой панели.
Это место, где вы должны идентифицировать выполненные вами тесты. Он содержит несколько тестов, и чтобы определить конкретный тест, вам необходимо выполнить поиск по имени сборки, которое вы указали в скрипте.
В приведенном выше коде мы назвали сборку “AuthPopUp” и теперь ищем эту сборку. На этой странице также отображается статус вашей сборки и время, затраченное на выполнение.
- Щелкните представление сборки, чтобы просмотреть выполненные тесты.
Вы можете увидеть тест “Auth Popup Test”, который был предоставлен в скрипте, и вот как мы идентифицируем наши тесты в лямбда-тесте. Здесь вы можете проверить все сведения о тестировании, которые были предоставлены в скрипте, такие как браузер, версия браузера, операционная система и версия, в которой был выполнен тест. Это будет то же самое, что и в тестовом скрипте.
Поскольку мы включили запись видео в коде, вы увидите видео, прикрепленное к тесту на этой странице, в котором записаны все этапы тестирования во время выполнения теста.
Воспроизводя видео, вы можете просмотреть, как выполнялись тесты. В случае сбоя это помогло бы проанализировать точку, в которой произошел сбой.
заворачивать
Подводя итог, мы видели различные способы обработки всплывающего окна входа в систему на веб-странице с использованием Selenium WebDriver на Java. Я надеюсь, что вы все получили хорошие знания благодаря этой статье. Пожалуйста, поделитесь этой статьей со своими друзьями и коллегами, и я хотел бы услышать ваши комментарии по этому поводу. Счастливого Тестирования…! 😊
Оригинал: “https://dev.to/shalinibaskaran12/how-to-handle-login-pop-up-in-selenium-webdriver-using-java-1co5”