efficient selenium scripting
이전 튜토리얼에서 우리는 기술적 의미에 대해 논의했습니다. 프레임 워크에서 로깅을 구현하는 동안 . 우리는상의 했어 log4j 유틸리티 길이. 사용성 관점에서 log4j를 구성하는 기본 구성 요소에 대해 논의했습니다. 어 펜더 및 레이아웃을 통해 사용자는 원하는 로깅 형식 / 패턴 및 데이터 소스 / 위치를 선택하는 데 활용됩니다.
현재 27 번째 튜토리얼에서 포괄적 인 무료 셀레늄 온라인 교육 시리즈 , 우리는 몇 가지 사소한 아직 중요한 주제 반복되는 문제를 해결하는 데 도움이됩니다. 일상적인 스크립팅에서 사용할 수도 있고 사용하지 않을 수도 있지만 장기적으로는 도움이 될 것입니다.
우리는 할거에요 마우스 및 키보드 이벤트를 처리하고 목록을 구현하여 여러 링크에 액세스하는 몇 가지 고급 개념에 대해 논의합니다. . 따라서 적절한 시나리오와 코드 스 니펫의 도움으로 이러한 주제를 시작하고 간략하게 논의 해 보겠습니다.
신입생을위한 핵심 자바 인터뷰 질문 및 답변
학습 내용 :
자바 스크립트 실행기
테스트 시나리오를 자동화하는 동안 테스트 스크립트의 고유 한 부분이되는 특정 작업이 있습니다.
이러한 작업은 다음과 같습니다.
- 버튼, 하이퍼 링크 등을 클릭합니다.
- 텍스트 상자에 입력
- 원하는 개체가 표시 될 때까지 세로 또는 가로로 스크롤
- 그리고 훨씬 더
이제 이전 튜토리얼에서 이러한 작업을 자동화하는 가장 좋은 방법은 Selenium 명령을 사용하는 것이 분명합니다.
하지만 셀레늄 명령이 작동하지 않으면 어떻게 될까요?
예, 매우 기본적이고 기본적인 셀레늄 명령이 특정 상황에서 작동하지 않을 수 있습니다.
즉, 이러한 상황을 해결할 수 있도록 JavaScript 실행기를 그림에 포함시킵니다.
JavaScript 실행기 란 무엇입니까?
JavascriptExecutor 인터페이스는 org.openqa.selenium의 일부이며 java.lang.Object 클래스를 구현합니다. JavascriptExecutor는 웹 브라우저 내에서 직접 JavaScript를 실행할 수있는 기능을 제공합니다. JavaScript를 실행할 수 있도록 특정 매개 변수 세트와 함께 메소드 형태의 특정 메커니즘이 구현에 제공됩니다.
행동 양식
executeScript (문자열 스크립트, 인수)
메서드 이름에서 알 수 있듯이 현재 창, 경고, 프레임 등 (WebDriver 인스턴스가 현재 초점을 맞추고있는 창) 내에서 JavaScript를 실행합니다.
executeAsyncScript (문자열 스크립트, 인수)
메서드 이름에서 알 수 있듯이 현재 창, 경고, 프레임 등 (WebDriver 인스턴스가 현재 초점을 맞추고있는 창) 내에서 JavaScript를 실행합니다.
매개 변수와 import 문은 두 실행기 메서드에 공통입니다.
매개 변수
스크립트 – 실행할 스크립트
인수 – 스크립트 실행에 필요한 매개 변수 (있는 경우)
수입 명세서
테스트 스크립트에서 JavascriptExecutors를 사용하려면 다음 구문을 사용하여 패키지를 가져와야합니다.
import org.openqa.selenium.JavascriptExecutor;
샘플 코드
# 1) 웹 요소 클릭
// Locating the web element using id WebElement element = driver.findElement(By.id('id of the webelement')); // Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Clicking the web element js.executeScript('arguments(0).click();', element);
# 2) 텍스트 상자에 입력
무료 PC 수리 도구 Windows 10
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
# 3) 웹 요소가보기에 나타날 때까지 아래로 스크롤
WebElement element=driver.findElement(By.xpath('//input(contains(@value,'Save'))')); // Instantiating the javascriptExecutor and scrolling into the view in the single test step ((JavascriptExecutor)driver).executeScript('arguments(0).scrollIntoView(true);',element);
JavascriptExecutor에 액세스하기위한 코드를 작성하는 다양한 다른 방법을 찾을 수 있습니다.
목록의 여러 요소에 액세스
때때로 우리는 순서가 있거나 정렬되지 않은 목록으로 배열 된 여러 하이퍼 링크, 이미지 등과 같은 동일한 유형의 요소를 발견 할 수 있습니다. 따라서 단일 코드로 이러한 요소를 처리하는 것이 절대적으로 합리적이며 WebElement List를 사용하여 수행 할 수 있습니다. 내가 말하는 요소를 이해하려면 아래 스크린 샷을 참조하십시오.
위의 이미지에서 다양한 서비스 제공자가 정렬되지 않은 목록에 속함을 알 수 있습니다. 따라서 요소 목록을 사용하여 단일 코드로 이러한 요소의 클릭 가능성 및 가시성을 확인할 수 있습니다.
수입 명세서
테스트 스크립트에서 WebElement 목록을 사용하려면 다음 구문을 사용하여 패키지를 가져와야합니다.
import java.util.List;
샘플 코드
// Storing the list List serviceProviderLinks = driver.findElements(By.xpath('//div(@id='ServiceProvider')//ul//li')); // Fetching the size of the list int listSize = serviceProviderLinks.size(); for (int i=0; i적절한 구현 변경 사항이있는 요소를 확인하는 데 목록을 사용할 수있는 다양한 요구 사항이 있습니다.
키보드 및 마우스 이벤트 처리
키보드 이벤트 처리
앞서 말했듯이, 서로 다른 맥락에서 동일한 문제 설명을 처리하는 방법에는 n 가지가 있습니다.
따라서 때때로 기존의 거래 전략을보다 진보 된 전략으로 변경하여 문제를 처리 할 필요성이 발생합니다. 셀레늄 명령으로 경고 및 팝업 등을 처리 할 수없는 경우를 목격했기 때문에 키보드 스트로크와 마우스 이벤트를 사용하여 처리하기 위해 다른 Java 유틸리티를 선택해야했습니다.
로봇 클래스는 키보드 이벤트 및 마우스 이벤트를 수행하는 옵션 중 하나입니다.
시나리오와 그 구현의 도움으로 개념을 이해합시다.
대본:
경고 인터페이스를 사용하여 수락하거나 취소 할 수없는 불필요한 팝업이 화면에 나타나는 상황을 모아 보겠습니다. 따라서 우리가 남긴 유일한 현명한 옵션은 바로 가기 키 – 'Alt + 스페이스 바 + C'를 사용하여 창을 닫는 것입니다. . 로봇 클래스를 사용하여 팝업을 닫는 방법을 살펴 보겠습니다.
구현을 시작하기 전에 테스트 스크립트 내에서 Robot 클래스를 사용할 수 있도록 필요한 패키지를 가져와야합니다.
수입 명세서
import java.awt.Robot;
샘플 코드
// Instantiating Robot class Robot rb =new Robot(); // Calling KeyPress event rb.keyPress(KeyEvent.VK_ALT); rb.keyPress(KeyEvent.VK_SPACE); rb.keyPress(KeyEvent.VK_C); // Calling KeyRelease event rb.keyRelease(KeyEvent.VK_C); rb.keyRelease(KeyEvent.VK_SPACE); rb.keyRelease(KeyEvent.VK_ALT);
로봇 클래스를 사용하여 마우스 이벤트를 처리 할 수도 있지만 여기서는 마우스 이벤트를 처리하는 셀레늄의 기능을 살펴 보겠습니다.
마우스 이벤트 처리
WebDriver는 사용자가 마우스 및 키보드 이벤트를 자동화하기 위해 이용할 수있는 광범위한 상호 작용 유틸리티를 제공합니다. 액션 인터페이스는 단일 사용자 상호 작용을 시뮬레이션하는 유틸리티 중 하나입니다.
따라서 다음 시나리오에서 옵션 목록을 여는 드롭 다운에서 마우스를 가져가는 액션 인터페이스를 확인합니다.
대본:
- 드롭 다운에서 마우스 가리 키기
- 목록 옵션에서 항목 중 하나를 클릭하십시오.
수입 명세서
import org.openqa.selenium.interactions.Actions;
샘플 코드
예제와 함께 유닉스에서 명령 찾기
// Instantiating Action Interface Actions actions= new Actions(driver); // howering on the dropdown actions.moveToElement(driver.findElement(By. id ('id of the dropdown'))).perform(); // Clicking on one of the items in the list options WebElement subLinkOption=driver.findElement(By.id('id of the sub link')); subLinkOption.click();
결론
이 자습서에서는 효율적인 스크립팅과 관련된 몇 가지 고급 항목과 사용자가 마우스 및 키보드 이벤트를 처리해야하는 시나리오의 문제를 해결하는 방법에 대해 논의했습니다. 또한 하나 이상의 웹 요소를 목록에 저장하는 방법에 대해서도 논의했습니다. 이러한 장애가 발생하면 문제를 해결할 수 있기를 바랍니다.
다음 튜토리얼 # 28 : 시리즈의 다가오는 자습서에서는 Selenium WebDriver를 사용한 데이터베이스 테스트 개념 . 우리는 데이터베이스 연결 메커니즘을 목격하고 셀레늄 쿼리를 실행하고 Selenium WebDriver 코드를 통해 결과를 가져옵니다.
추천 도서
- Selenium WebDriver 소개 – Selenium Tutorial # 8
- 로그로 Selenium 스크립트 디버깅 (Log4j 튜토리얼) – Selenium 튜토리얼 # 26
- 30 개 이상의 최고의 셀레늄 튜토리얼 : 실제 예제로 셀레늄 배우기
- Cucumber Selenium 튜토리얼 : Cucumber Java Selenium WebDriver 통합
- Selenium 스크립트 빌드를 위해 Chrome 및 IE 브라우저에서 요소를 찾는 방법 – Selenium Tutorial # 7
- 첫 번째 WebDriver 스크립트 구현 – Selenium WebDriver Tutorial # 10
- Eclipse로 WebDriver 전체 설정 및 설치 – Selenium Tutorial # 9
- Generics 및 Testsuite 생성 – Selenium Tutorial # 22