how handle alerts popups selenium webdriver selenium tutorial 16
Selenium WebDriver에서 Windows 및 웹 기반 경고 / 팝업을 처리하는 효율적인 방법 :
무료 PC 최적화 도구 Windows 10
이전 튜토리얼에서 우리는 WebDriver에서 제공하는 다양한 유형의 대기 . WebDriver에서 사용할 수있는 다양한 유형의 탐색 옵션에 대해서도 논의했습니다.
앞으로 나아 가기 Selenium WebDriver 튜토리얼 , 우리는 다음에 대해 논의 할 것입니다 웹 애플리케이션과 그 처리 전략을 테스트하는 동안 사용할 수있는 다양한 유형의 경고.
주로 집중할 두 가지 유형의 경고가 있습니다. :
- Windows 기반 경고 팝업
- 웹 기반 경고 팝업
창 기반 팝업을 처리하는 것은 WebDriver의 기능을 넘어선다는 것을 알고 있으므로 창 팝업을 처리하기 위해 일부 타사 유틸리티를 사용합니다.
팝업 처리는 웹 애플리케이션을 테스트하는 동안 자동화해야하는 가장 어려운 작업 중 하나입니다. 팝업 유형의 다양성으로 인해 상황이 더욱 복잡해집니다.
알림 상자 / 팝업 상자 / 확인 상자 / 프롬프트 / 인증 상자 란?
일종의 정보를 제공하거나 잠재적으로 손상 될 수있는 작업에 대해 경고하기 위해 디스플레이 화면에 나타나는 작은 상자에 지나지 않으며 작업에 대한 권한을 요청할 수도 있습니다.
예: 더 나은 이해를 위해 실제 사례를 고려해 보겠습니다. 이러한 인기있는 소셜 네트워킹 사이트에 사진을 업로드했다고 가정 해 보겠습니다. 나중에 업로드 된 사진을 삭제하고 싶습니다. 그래서 삭제하려면 삭제 버튼을 클릭했습니다. 삭제 버튼을 클릭하자마자 시스템은 내 작업에 대해 경고하며 다음과 같은 메시지를 표시합니다. – 정말 파일을 삭제 하시겠습니까? 이제이 경고를 수락하거나 거부 할 수있는 옵션이 있습니다.
그래서 세션에 앞서 유형에 따라 알림을 거부하거나 수락하는 방법을 살펴 보겠습니다. 웹 기반 팝업으로 시작합니다.
학습 내용 :
웹 기반 팝업
WebDriver를 사용하여 어떻게 처리하는지 살펴 보겠습니다.
웹 기반 팝업 상자 처리
WebDriver는 Alert 인터페이스를 사용하여 이러한 팝업을 처리하는 매우 효율적인 방법을 사용자에게 제공합니다.
Alert 인터페이스와 함께 사용할 네 가지 방법이 있습니다.
1) 무효 dismiss () – 팝업 창이 나타나면 dismiss () 메서드는 'Cancel'버튼을 클릭합니다.
두) 무효 accept () – 팝업 창이 나타나면 accept () 메서드는 'Ok'버튼을 클릭합니다.
삼) 문자열 getText () – getText () 메서드는 경고 상자에 표시된 텍스트를 반환합니다.
4) void sendKeys (문자열 stringToSend) – sendKeys () 메서드는 경고 상자에 지정된 문자열 패턴을 입력합니다.
계속해서 실제 구현을 살펴 보겠습니다.
테스트중인 애플리케이션 설명
우리는 몇 가지 기본적인 유형의 웹 요소를 포함하는 방식으로 웹 페이지를 설계했습니다. 이것은이 시리즈의 앞부분에서 Select 클래스를 논의하면서 소개 한 것과 동일한 응용 프로그램입니다.
- 하이퍼 링크 : 'Google'및 'abodeQA'라는 두 개의 하이퍼 링크가 제공되어 사용자를 각각 'http://www.google.com/'및 'http://www.abodeqa.com/'으로 리디렉션합니다. 클릭 이벤트.
- 쓰러지 다 : 기본값으로 설정된 색상, 과일 및 동물을 선택하기 위해 3 개의 하이퍼 링크가 생성되었습니다.
- 단추 : 클릭 이벤트시 확인, 취소 버튼이있는 팝업창을 띄우는“시도”버튼이 생성되었습니다.
(확대하려면 이미지를 클릭하십시오)
다음은 위에서 언급 한 웹 페이지를 만드는 데 사용되는 HTML 코드입니다.
선택 클래스 테스트적색 녹색 황색 회색 | 애플 오렌지 망고 라임 | 코끼리 마우스 개 선택 |
버튼을 클릭하면 확인 상자가 표시됩니다. 시도해보세요 function myFunction () {confirm ( 'Press a button!'); } |
자동화 할 시나리오
- 웹 브라우저를 시작하고 웹 페이지를 엽니 다.
- '시도'버튼을 클릭하십시오
- 경고 수락
- '시도'버튼을 다시 클릭하십시오
- 경고 거부
Select Class를 사용하는 WebDriver 코드
스크립트 생성을 위해 이전 튜토리얼에서 생성 된“Learning_Selenium”프로젝트를 사용한다는 점에 유의하십시오.
1 단계 :“Learning_Selenium”프로젝트 아래에“DemoWebAlert”라는 새 Java 클래스를 만듭니다.
2 단계 : 'DemoWebAlert.java'클래스에 아래 코드를 복사하여 붙여 넣습니다.
아래는 위에서 언급 한 시나리오에 해당하는 테스트 스크립트입니다.
import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; /** * class description */ public class DemoWebAlert { WebDriver driver; /** * Constructor */ public DemoWebAlert() { } /** * Set up browser settings and open the application */ @Before public void setUp() { driver=new FirefoxDriver(); // Opened the application driver.get('file:///F:/Work/Selenium/Testing-Presentation/DemoWebPopup.htm'); driver.manage().window().maximize(); } /** * Test to check Select functionality * @throws InterruptedException */ @Test public void testWebAlert() throws InterruptedException { // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert Alert alert = driver.switchTo().alert(); alert.accept(); // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert driver.switchTo().alert().dismiss(); // clicking on try it button driver.findElement(By.xpath('//button(contains(text(),'Try it'))')).click(); Thread.sleep(5000); // accepting javascript alert System.out.println(driver.switchTo().alert().getText()); driver.switchTo().alert().accept(); } /** * Tear down the setup after test completes */ @After public void tearDown() { driver.quit(); } }
코드 연습
수입 명세서
org.openqa.selenium.Alert 가져 오기 – 스크립트 생성 전에이 패키지 가져 오기 패키지는 WebDriver에서 웹 기반 경고를 처리하는 데 필요한 Alert 클래스를 참조합니다.
Alert 클래스에 대한 객체 생성
경고 경고 = driver.switchTo (). alert ();
Alert 클래스에 대한 참조 변수를 생성하고이를 경고에 참조합니다.
SQL 쿼리 인터뷰 질문 및 답변 3 년 경험
경고로 전환
Driver.switchTo (). alert ();
위의 명령은 컨트롤을 최근 생성 된 팝업 창으로 전환하는 데 사용됩니다.
경고 수락
alert.accept ();
위의 명령은 경고를 수락하여 Ok 버튼을 클릭합니다.
경고 거부
alert.dismiss ();
위의 명령은 경고를 닫고 취소 버튼을 클릭하므로 작업이 진행되지 않아야합니다.
창 기반 팝업
자동화하는 동안 때때로 파일을 업로드하는 동안 인쇄 팝업 또는 탐색 창과 같은 창에서 생성 된 팝업을 처리해야하는 몇 가지 시나리오가 있습니다.
또한 읽기 = >> Selenium에서 파일 업로드를 처리하는 방법
Selenium이 웹 애플리케이션 테스트 만 지원하는 자동화 테스트 도구라는 것을 알기 때문에 이러한 팝업을 처리하는 것은 항상 약간 까다로 웠습니다. 즉, Windows 기반 애플리케이션을 지원하지 않으며 창 알림도 그중 하나입니다. 그러나 Selenium만으로는 상황을 해결할 수 없지만 일부 타사 개입과 함께이 문제를 극복 할 수 있습니다.
셀레늄과 함께 창 기반 팝업을 처리하는 데 사용할 수있는 여러 타사 도구가 있습니다.
답변이있는 PL SQL 인터뷰 질문
이제 Robot 클래스를 사용하여 창 기반 팝업을 처리해 보겠습니다.
로봇 클래스는 키보드 및 마우스 동작을 에뮬레이트하는 자바 기반 유틸리티입니다.
계속 진행하기 전에 AUT (Application Under Test)를 살펴 보겠습니다.
테스트중인 애플리케이션 설명
테스트중인 애플리케이션으로 'gmail.com'을 사용합니다. 응용 프로그램에 더 이상 소개가 필요하지 않다고 생각합니다.
자동화 할 시나리오
- 웹 브라우저를 실행하고 애플리케이션을 엽니 다 –“gmail.com”
- 유효한 사용자 이름과 비밀번호를 입력하세요.
- 로그인 버튼을 클릭하십시오
- 작성 버튼을 클릭하십시오
- 첨부 아이콘을 클릭하십시오
- 윈도우 기반 팝업으로 업로드 할 파일을 선택합니다.
로봇 클래스를 사용하는 WebDriver 코드
스크립트 생성을 위해 이전 튜토리얼에서 생성 된“Learning_Selenium”프로젝트를 사용한다는 점에 유의하십시오.
1 단계 :“Learning_Selenium”프로젝트 아래에“DemoWindowAlert”라는 새 Java 클래스를 만듭니다.
2 단계 :“DemoWindowAlert.java”클래스에 아래 코드를 복사하여 붙여 넣습니다.
아래는 위에서 언급 한 시나리오에 해당하는 테스트 스크립트입니다.
import java.awt.Robot;
import java.awt.event.KeyEvent; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; 공용 클래스 DemoWindowAlert {WebDriver 드라이버; @Before public void setUp () {driver = new FirefoxDriver (); driver.get ( 'https://gmail.com'); driver.manage (). window (). maximize (); } @Test public void testWindowAlert () throws Exception {// 유효한 이메일 주소 입력 driver.findElement (By.id ( 'Email')). sendKeys ('TestSelenium1607@gmail.com '); // 유효한 암호를 입력하십시오. driver.findElement (By.id ( 'Passwd')). sendKeys ( 'TestSelenium'); // 로그인 버튼을 클릭합니다. driver.findElement (By.id ( 'signIn')). click (); Thread.sleep (30000); // 작성 버튼 클릭 driver.findElement (By.xpath ( '// div (@ class ='z0 ') // div (contains (text (),'COMPOSE '))')). click (); // 파일 첨부 아이콘을 클릭합니다. driver.findElement (By.xpath ( '// div (contains (@ command,'Files ')) // div (contains (@ class,'aaA '))')). click ( ); // Robot 클래스의 인스턴스 생성 (Java 기반 유틸리티) Robot rb = new Robot (); // keyPress 및 keyRelease 이벤트의 도움으로 키 누르기 rb.keyPress (KeyEvent.VK_D); rb.keyRelease (KeyEvent.VK_D); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_SHIFT); rb.keyPress (KeyEvent.VK_SEMICOLON); rb.keyRelease (KeyEvent.VK_SEMICOLON); rb.keyRelease (KeyEvent.VK_SHIFT); rb.keyPress (KeyEvent.VK_BACK_SLASH); rb.keyRelease (KeyEvent.VK_BACK_SLASH); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_P); rb.keyRelease (KeyEvent.VK_P); rb.keyPress (KeyEvent.VK_I); rb.keyRelease (KeyEvent.VK_I); rb.keyPress (KeyEvent.VK_C); rb.keyRelease (KeyEvent.VK_C); Thread.sleep (2000); rb.keyPress (KeyEvent.VK_ENTER); rb.keyRelease (KeyEvent.VK_ENTER); Thread.sleep (2000); } @After public void tearDown () {driver.quit (); }} 코드 연습
수입 명세서
import java.awt.Robot – 스크립트 생성 전에이 패키지 가져 오기 패키지는 키보드 및 마우스 이벤트를 시뮬레이션하는 데 필요한 Java의 Robot 클래스를 참조합니다.
import java.awt.event.KeyEvent – 패키지를 통해 사용자는 키보드의 keyPress 및 keyRelease 이벤트를 사용할 수 있습니다.
로봇 클래스를위한 객체 생성
로봇 rb = new Robot ();
Robot 클래스에 대한 참조 변수를 만들고 인스턴스화합니다.
KeyPress 및 KeyRelease 이벤트
rb.keyPress (KeyEvent.VK_D);
rb.keyRelease (KeyEvent.VK_D);
keyPress 및 keyRelease 메서드는 사용자가 각각 키보드에서 특정 키를 눌렀다 놓는 것을 시뮬레이션합니다.
결론
이 자습서에서는 웹 기반 팝업을 처리하는 데 사용되는 WebDriver의 Alert 클래스에 대해 알아 보려고했습니다. 또한 keyPress 및 keyRelease 이벤트의 도움으로 창 기반 경고의 값을 채우는 데 사용할 수있는 Robot 클래스에 대해 설명했습니다.
기사 요약 :
- 경고는 일종의 정보를 제공하거나 잠재적으로 손상 될 수있는 작업에 대해 경고하거나 작업에 대한 권한을 요청할 수도 있도록 디스플레이 화면에 나타나는 작은 상자입니다.
- 일반적으로 두 가지 유형의 경고가 있습니다. -
- Windows 기반 경고 팝업
- 웹 기반 경고 팝업
- 실제 스크립팅 전에 드롭 다운을 처리하고 Select 클래스에 액세스 할 수 있도록하기위한 WebDriver 스크립트를 만들 수 있도록 패키지를 가져와야합니다.
- WebDriver는 Alert 인터페이스를 사용하여 이러한 팝업을 처리하는 매우 효율적인 방법을 사용자에게 제공합니다.
- 무효 dismiss () – 버리다() 팝업 창이 나타나면 즉시 '취소'버튼을 클릭합니다.
- 무효 accept () – 동의하기() 팝업 창이 나타나면 즉시 '확인'버튼을 클릭합니다.
- 끈 getText () – getText () 메서드는 경고 상자에 표시된 텍스트를 반환합니다.
- void sendKeys (문자열 stringToSend) – sendKeys () 메서드는 경고 상자에 지정된 문자열 패턴을 입력합니다.
- 창 기반 팝업 처리 Selenium이 웹 애플리케이션 테스트 만 지원하는 자동화 테스트 도구라는 것을 알기 때문에 항상 조금 까다로 웠습니다. 즉, Windows 기반 애플리케이션을 지원하지 않으며 창 경고도 그중 하나입니다.
- 로봇 클래스 키보드 및 마우스 동작을 에뮬레이트하고 키보드 이벤트의 도움으로 창 기반 팝업을 처리하는 데 효과적으로 사용할 수있는 Java 기반 유틸리티입니다.
- keyPress 및 keyRelease 메서드는 사용자가 각각 키보드에서 특정 키를 눌렀다 놓는 것을 시뮬레이션합니다.
다음 튜토리얼 # 17 : 다음 튜토리얼에서 우리는 다양한 일반적으로 사용되는 WebDriver 명령 . 예외 처리 및 iframe 처리와 같은 주제에 대해 설명하겠습니다. WebDriver에서 제공하는 get 명령에 대해서도 설명합니다.
독자가 일상적인 스크립트 작성에서 이러한 개념을 연습 할 수 있도록 이해하기 쉽도록 빠른 예제로 이러한 주제를 설명합니다.
독자를위한 참고 사항 : 그때까지 WebDriver 유틸리티 –“Alert 클래스”및 Java 유틸리티 –“Robot Class”를 사용하여 웹 기반 및 창 기반 팝업이있는 웹 페이지를 조정하고 자동화하십시오.
이 튜토리얼이나 다른 이전 튜토리얼에 대한 질문 / 댓글을 아래 댓글에 자유롭게 게시하십시오.
추천 도서
- Cucumber Selenium 튜토리얼 : Cucumber Java Selenium WebDriver 통합
- Selenium WebDriver 소개 – Selenium Tutorial # 8
- 첫 번째 WebDriver 스크립트 구현 – Selenium WebDriver Tutorial # 10
- Eclipse로 WebDriver 전체 설정 및 설치 – Selenium Tutorial # 9
- 다양한 유형의 WebDriver 명령을 사용하여 웹 요소의 가시성 확인 – Selenium Tutorial # 14
- GeckoDriver Selenium 튜토리얼 : Selenium 프로젝트에서 GeckoDriver를 사용하는 방법
- Jenkins와 Selenium WebDriver의 통합 : 단계별 자습서
- 효율적인 Selenium 스크립팅 및 문제 해결 시나리오 – Selenium 자습서 # 27