Selenium WebDriver의 로그인 팝업 창을 Java로 어떻게 처리합니까?
우리는 예시 사이트로 내비게이션을 할 것이다.사용자가 이 사이트를 방문할 때, 시스템은 로그인 알림을 팝업할 것이다.사용자는 반드시 사용자 이름과 비밀번호를 입력해야만 이 사이트를 더욱 탐색할 수 있다.다음은 웹 사이트에 제시된 인증 팝업 창의 화면 캡처입니다.
왜 이러지?
일부 서버를 방문할 수 있는 사이트는 증거를 필요로 해야만 더욱 내비게이션을 할 수 있다.따라서 이러한 사이트를 방문할 때 인증 팝업 창이 뜨고 사용자가 자격 증명을 입력하도록 알린다.
이 Selenium WebDriver 자바 강좌에서 자바를 사용하여 Selenium WebDriver의 로그인 팝업 창을 처리하는 다양한 방법을 볼 수 있습니다.
Selenium WebDriver의 로그인 팝업 창은 어떻게 처리합니까?
Selenium WebDriver의 로그인 팝업 창을 Java로 처리하려면 다음 방법 중 하나를 사용합니다.
URL에서 사용자 이름과 암호를 전달하여 Selenium WebDriver의 로그인 팝업 창을 처리합니다.
기본 인증 팝업 창은 브라우저가 특정 웹 페이지로 이동할 때 표시되는 경고와 유사합니다.기본 인증 팝업 창을 처리하려면 사용자 이름과 암호를 웹 페이지의 URL과 함께 전달할 수 있습니다.
이 로그인 팝업 창을 처리하는 구문은 다음과 같습니다.
https://username:[email protected]
로그인 팝업 알림이 나타날 때, 우리는 사용자 이름을 '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();
}
}
자격 증명을 올바르게 입력하면 사용자는 인증을 통과하여 사이트에 정확한 정보를 표시할 수 있습니다.AutoIT를 사용하여 Selenium WebDriver의 로그인 팝업 처리
AutoIT는 키보드와 마우스의 상호 작용과 관련된 작업을 자동화하는 데 사용되는 스크립트 언어입니다.파일 업로드, 파일 다운로드, 인증 팝업 처리 등 보통 자동화 작업에 사용됩니다. 이제 AutoIT를 설치하고 웹 페이지의 로그인 팝업 창을 처리합니다.
Send("admin")
Send("(TAB)")
Send("admin")
Send("(ENTER)")
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 beta 버전의 새로운 기능을 사용하여 같은 방법을 시도해 보겠습니다.Selenium 4 beta 버전을 사용하여 Selenium WebDriver의 로그인 팝업 처리
latest version of Selenium 크롬 드라이브 클래스를 도입했는데 이 클래스는 getDevTools()와 excuteCdpCommand()로 크롬 DevTools에 접근하는 두 가지 방법이 있다.
getDevTools () 방법은 새 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.<Integer>empty(), Optional.<Integer>empty(), Optional.<Integer>empty()));
Map<String, Object> 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();
}
}
LambdaTest는 클라우드 컴퓨팅 그리드에서 쉽게 실행할 수 있는 온라인 클라우드 플랫폼을 제공한다Selenium automation testing.LambdaTest는 2000여 개의 다양한 브라우저/운영체제 조합에서 테스트를 할 수 있는 가장 큰 웹 및 모바일 크로스 브라우저 테스트 플랫폼을 제공합니다.사이트에 로그인하면 사용자 이름과 액세스 키를 얻을 수 있으며 클라우드에서 스크립트를 실행할 수 있습니다.사용자 이름과 액세스 키를 Profile Section에서 가져올 수 있습니다.
다음은 LambdaTest에서 로그인 팝업 테스트를 수행하는 코드 세그먼트입니다.
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();
}
}
TestNG.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" parallel="tests">
<test name="ChromeBrowserTest">
<parameter name="browser" value="chrome"/>
<classes>
<class name="Pages.Demo">
</class>
</classes>
</test>
</suite>
이 테스트를 LambdaTest 플랫폼에서 실행하려면 다음 절차를 따르십시오.위 코드에서'AuthPopUp'이라는 이름으로 구축할 것입니다. 이 구축을 검색하십시오.이 페이지에는 생성된 상태와 실행에 필요한 시간도 표시됩니다.
코드에서 비디오 녹화를 활성화했기 때문에 이 페이지에는 테스트를 수행할 때의 모든 테스트 단계가 기록된 테스트에 첨부된 비디오가 표시됩니다.
비디오를 재생하면 테스트가 어떻게 실행되는지 볼 수 있습니다.장애가 발생하면 장애가 발생한 위치를 분석하는 데 도움이 됩니다.
마무리
한 마디로 하면 자바에서 Selenium WebDriver를 사용하여 웹 페이지의 로그인 팝업 창을 처리하는 다른 방법을 보았습니다.나는 너희들이 모두 이 문장을 통해 좋은 지식을 얻기를 바란다.당신의 친구와 동갑내기와 이 글을 공유해 주십시오. 나는 당신이 이 글에 대한 평론을 듣고 싶습니다.즐거움 테스트...!😊
Reference
이 문제에 관하여(Selenium WebDriver의 로그인 팝업 창을 Java로 어떻게 처리합니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lambdatest/how-to-handle-login-pop-up-in-selenium-webdriver-using-java-1co5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)