debugging selenium scripts with logs selenium tutorial 26
이제 우리는 가장 포괄적 인 Selenium 테스트 도구에 대한 무료 튜토리얼 . 우리가 지금 게시하는 튜토리얼은 고급 Selenium 교육의 일부입니다.
이전 튜토리얼에서 우리는 Hudson이라는 지속적인 통합 도구 . 이 도구는 무료 도구이며 테스트 프로젝트를 빌드하고 테스트 클래스를 원격으로 실행하고 이해 관계자에게 테스트 통과 및 실패와 관련된 애플리케이션 상태를 알리는 알림 이메일을 보낼 수있는 훨씬 더 많은 기능이 있습니다.
현재 튜토리얼에서 우리는 직접 또는 간접적으로 도움이 될 몇 가지 고급 개념으로 이동합니다. 자동화 프레임 워크 최적화 사용자에게 더 많은 가시성을 제공합니다.
따라서 현재 튜토리얼에서 우리는 로깅 기능, 잠재력, 디버깅 기능 그리고 훨씬 더.
때때로 로깅은 기존 스크립트 생성 메커니즘에 대한 오버 헤드로 간주되지만 전문가는 다음과 같은 장점 때문에 정확한 비율로 사용하는 경우 모범 사례 중 하나로 간주합니다.
Selenium 스크립트 로그인의 장점 :
- 테스트 스위트 실행에 대한 완전한 이해를 제공합니다.
- 실행 후 조사를 위해 로그 메시지를 외부 파일에 저장할 수 있습니다.
- 로그는 프로그램 실행 문제 및 실패를 디버깅하는 데 탁월한 보조 도구입니다.
- 또한 로그를 검토하여 이해 관계자가 애플리케이션의 상태를 확인할 수 있습니다.
학습 내용 :
Log4j – 자바 기반 로깅 API
로깅에 대한 기술적 인 세부 사항으로 이동하여 전체적으로 사용할 API의 출처에 대해 논의하겠습니다. log4j 튜토리얼 로그를 생성합니다. Log4j는 로그 생성에 도움이되는 유틸리티를 개발하기위한 유럽 Secure Electronic Marketplace의 사람들이 공동으로 노력한 결과로 1996 년에 log4j가 각광을 받았습니다. Log4j는 오픈 소스 도구이며 IBM Public License에 따라 라이센스가 부여되었습니다.
log4j의 구현을 구성하는 세 가지 주요 구성 요소가 있습니다. 이러한 구성 요소는 로그 수준, 렌더링되는 로그 메시지의 형식 및 저장 메커니즘에 대한 세부 정보를 나타냅니다.
Log4j의 구성 요소
- 로거
- 어 펜더
- 레이아웃
# 1) 로거
프로젝트에서 로거를 구현하려면 다음 단계를 수행해야합니다.
1 단계 : Logger 클래스의 인스턴스 만들기
2 단계 : 로그 레벨 정의
로거 클래스 – log4j를 사용할 수 있도록 모든 제네릭 메소드가 이미 구현 된 Java 기반 유틸리티입니다.
로그 수준 – 로그 수준은 일반적으로 인쇄 방법으로 알려져 있습니다. 로그 메시지를 인쇄하는 데 사용됩니다. 주로 5 가지 종류의 로그 수준이 있습니다.
- 오류()
- 경고 ()
- 정보 ()
- 디버그 ()
- 로그()
따라서 로그를 생성 할 수 있으려면 로거 인스턴스를 통해 인쇄 메서드를 호출하기 만하면됩니다. 구현 단계에서 더 자세히 살펴 보겠습니다.
# 2) 어 펜더
이제 이러한 로그를 생성하는 방법을 알았으므로 다음으로 떠오르는 것은 로그를 볼 수있는 위치입니다. 이 질문에 대한 답은“Appenders”의 정의에 있습니다.
Appender는 로그를 생성해야하는 데이터 소스 / 매체를 지정하는 데 일관되게 사용됩니다. 데이터 소스의 범위는 콘솔, GUI, 텍스트 파일 등과 같은 다양한 외부 매체에서 확장됩니다.
# 3) 레이아웃
때때로 사용자는 특정 정보를 각 로그 문 앞에 추가하거나 추가하기를 원합니다. 예를 들어, 로그 문과 함께 타임 스탬프를 인쇄하고 싶습니다. 따라서 이러한 요구 사항은 '레이아웃'에 의해 달성 될 수 있습니다.
레이아웃은 사용자가 로그를 렌더링 할 원하는 형식을 선택할 수있는 유틸리티입니다. 어 펜더와 레이아웃은 둘 사이에 긴밀한 결합을 가지고 있습니다. 따라서 각 어 펜더를 특정 레이아웃으로 매핑해야합니다.
사용자는 여러 어 펜더를 정의하는 데 활용되며 각 맵에는 고유 한 레이아웃이 있습니다.
이제 log4j와 그 구성 요소의 기본 사항을 알았으므로 구현 현상에 초점을 맞출 것입니다.
전체 구현 프로세스를 단계별로 이해합시다.
설치 / 설정
설치 및 설정을 위해이 시리즈의 이전 세션에서 이미 만든 'Learning_Selenium'프로젝트를 고려할 것입니다.
1 단계 : 첫 번째이자 가장 중요한 단계는 log4j API 용 최신 jar를 다운로드하는 것입니다. 이 항아리는 공식 배포 웹 사이트에서 쉽게 찾을 수 있습니다. http://logging.apache.org/log4j/1.2/download.html ”.
2 단계 : 다음 단계는 빌드 경로를 구성하고 log4j.jar를 외부 라이브러리로 제공하는 것입니다.
이행
log4j를 사용한 로깅은 두 가지 방법으로 구현 및 구성 할 수 있습니다.
- 스크립트를 통한 프로그래밍 방식
- 구성 파일을 통해 수동으로
위에서 언급 한 두 구성 방법 모두 장점과 단점이 있습니다. 이 자습서에서는 쉽고 간단하게 구성 파일을 통해 log4j를 수동으로 구성하는 것을 고려합니다. 구성 파일은 log4j와 관련된 아티팩트를 구성하는 또 다른 XML 파일입니다.
log4j.xml 파일 생성
1 단계 . log4j.xml 파일을 만듭니다. 아래 코드를 복사하여 구성 파일에 붙여 넣으십시오.
구성 파일 연습
consoleAppender
콘솔 어 펜더는 콘솔에서 로그 문을 인쇄하는 데 사용됩니다.
파일 어 펜더
파일 어 펜더는 외부 파일 내에서 로그 문을 인쇄하는 데 사용됩니다. 사용자는 추가 된 태그의 on 및 off 값을 설정하여 시스템에 이전에 생성 된 로그에 문을 추가 및 기록하거나 이전에 생성 된 로그를 덮어 쓰고 새 로그를 모두 생성하도록 지시합니다.
'append' value= 'false' />
파일 매개 변수의 값은 해당 위치에 예상 로그 파일을 생성하도록 시스템에 알리기 위해 특정 위치로 설정됩니다. 또한 value 매개 변수 내에 로그 파일 이름을 지정합니다.
형세
이 자습서의 초기 섹션에서 설명했듯이 레이아웃은 로그 문에 대한 렌더링 메커니즘을 지정하는 데 사용됩니다. Log4j는 다양한 레이아웃 패턴을 제공합니다. 사용자는 ConversionPattern 매개 변수 값에서 원하는 패턴을 지정하는 데 활용됩니다.
위 레이아웃의 출력은 다음과 같아야합니다.
01-07-2014 12:56:32 정보 (GmailLogin) : 샘플 로그 메시지
위의 출력에서 :
- 첫 번째 필드 – 실행 날짜
- 두 번째 필드 – 테스트 단계가 실행 된 정확한 시간 (hh : mm : ss)
- 세 번째 필드 – 로그 수준 중 하나
- 네 번째 필드 – 테스트 클래스 이름
- 다섯 번째 필드 – 로그 메시지
2 단계 . log4j.XML 파일 생성이 완료되면 다음 단계는 log4j.XML 파일을 프로젝트의 루트 폴더 / 기본 디렉토리에 넣는 것입니다.
프로그램 수준 구현
3 단계 : 다음 단계는 구성자를 사용하여 log4j.xml 파일을 구성하고 구문 분석하는 것입니다.
통사론:
package com.logExample; import org.apache.log4j.xml.DOMConfigurator; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.RunWith; import org.junit.runner.notification.Failure; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ Demo.class }) public class TestSuite { /** * Setup method to set system property for log file name */ @BeforeClass public static void Setup() { // loading log4j.xml file DOMConfigurator.configure('log4j.xml'); } /** * @param args */ public static void main(String() args) { Result result = JUnitCore.runClasses(TestSuite.class); for (Failure failure : result.getFailures()) { System.out.println('
TEST NAME: ' + failure.getTestHeader()); System.out.println('
ERROR: ' + failure.getMessage() + '
'); System.out.println(failure.getTrace()); System.exit(1); } } }
노트 : 테스트 스위트 레벨 대신 클래스 레벨에서도 로그를 구현할 수 있습니다. 테스트 스위트가 아닌 테스트 클래스에서 필요한 변경을 수행하기 만하면됩니다.
4 단계 : 다음 단계는 프로젝트 아래에 테스트 클래스“GmailLogin.java”를 만드는 것입니다. 클래스 내에서 Gmail 로그인 기능을 구현합니다.
5 단계 : 다음 단계는 로그 문을 구현할 수 있도록 로거 클래스를 가져 오는 것입니다.
통사론:
import org.apache.log4j.Logger;
6 단계 : 프로세스의 다음 단계는 Logger 클래스의 개체를 인스턴스화하는 것입니다.
통사론:
// 로그 객체 초기화
공전 로그 로그 Logger.getLogger (Demo. 수업 .getName ());
7 단계 : 위에서 생성 한 Logger 유형의 로그 변수는 전체 테스트 클래스에서 로그 문을 생성하는 데 사용됩니다. 동일하게 다음 코드를 참조하십시오.
통사론:
@Test public void testGmailLogin() throws Exception{ // enter a valid email address driver.findElement(By.id('Email')).sendKeys('TestSelenium1607@gmail.com'); log.info('Entered a valid Email Address.'); // enter a invalid password driver.findElement(By.id('Passwd')).sendKeys('InvalidPassword'); log.info('Entered a invalid Password.'); // click on sign in button driver.findElement(By.id('signIn')).click(); log.info('Clicked on the Sign In Button.'); try{ //Verify the home page assertTrue('Verification Failed: User successfully landed on the Home Page.', driver.getTitle().equals('Gmail')); log.info('Verified that the user landed on the Home Page.'); } catch (Exception e) { log.error('Unsuccessfull Login.'); } }
로그 파일의 결과
01-07-2014 12:56:11 정보 (GmailLogin) : 시스템에 파일 업로드 : FileExample.txt
01-07-2014 12:56:11 정보 (GmailLogin) : 변경 사항 제출
01-07-2014 12:56:15 오류 (GmailLogin) : 로그인에 실패했습니다.
2020 년 3 월 업데이트
로그
로그는 우리가 수행하는 각 트랜잭션에 대해 기록하거나 생성하는 메시지입니다. 로그를 분석하여 무엇이 정확하거나 잘못되었는지 확인할 수 있습니다. 시스템이 갑자기 닫히면 로그를 분석하여 실패의 근본 원인을 파악할 수 있다고 가정합니다.
따라서 모든 개발주기에서 로그가 생성됩니다. 같은 방식으로 각 테스트 조건 또는 테스트 문 전후에 테스트하기 위해 Selenium 코드에 로그를 생성하여 모두 예상대로 작동하는지 확인할 수 있습니다.
log4j 프레임 워크
Selenium 코드에서 이러한 로그 파일을 생성하기 위해 Apache에서 제공하는 log4j 프레임 워크를 사용합니다. 이 프레임 워크를 통해 맞춤형 로그를 생성 할 수 있습니다.
딸깍 하는 소리 여기 Maven 저장소에서 log4j jar를 다운로드합니다.
토스트 POS 비용은 얼마입니까?
두 가지 방법으로 로그를 생성 할 수 있습니다.
- log4j.properties 파일 사용
- log4j.xml 파일 사용
이러한 파일에는 생성하려는 로그 종류에 대한 구성이 포함됩니다. 그중 하나를 사용할 수 있습니다. 둘 다 사용하려면 log4j.xml이 더 높은 우선 순위를 갖습니다. 로그를 생성하는 선호되는 방법은 속성 파일을 사용하는 것이므로 여기서는 속성 파일을 통해서만 생성하는 방법에 대해 자세히 살펴 보겠습니다.
log4j의 구현
위 경로에서 log4j jar 파일을 다운로드하여 프로젝트 빌드 경로에 추가합니다. 독립형 Java 애플리케이션을 사용하는 경우 log4j.properties 파일을 작성하고 소스 폴더에 병렬로 특성 파일을 추가하십시오.
Log4j.properties 파일은 키-값 쌍에 값을 저장하는 구성 파일입니다.
여기에는 세 가지 주요 구성 요소가 있습니다.
- 로거 : 로깅 정보를 캡처합니다.
- 어 펜더 : 콘솔, 파일, 소켓, NT 이벤트 로그 등과 같은 다른 선호 대상에 로깅 정보를 게시합니다.
- 레이아웃 : HTML, XML 레이아웃 등과 같은 다양한 스타일로 로깅 정보를 포맷합니다.
log4j.properties 파일의 구문
#1) 로깅 수준 INFO 및 appender X (appender는 모든 콘솔, 파일, 소켓, NT 이벤트 로그 일 수 있음)로 루트 로거를 정의합니다.
log4j.rootLogger = INFO, X
#두) X라는 어 펜더를 파일 어 펜더로 설정하십시오.
log4j.appender.X = org.apache.log4j.FileAppender
#삼) X 어 펜더의 레이아웃을 정의하십시오.
log4j.appender.X.layout = org.apache.log4j.PatternLayout log4j.appender.X.layout.conversionPattern = %m%n
log4j.properties 예제
위의 구문을 참조하여 log4j.properties 파일을 만듭니다.
# 레벨 INFO로 루트 로거를 초기화하고 stdout 및 fout을 사용하여 콘솔에 인쇄합니다.
log4j.rootLogger=INFO,stdout,fout
# 콘솔에 쓸 로거 stdout에 ConsoleAppender를 추가합니다.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# 정의 된 간단한 메시지 형식 레이아웃 패턴은 % m % n이며, 로깅 메시지를 줄 바꿈으로 인쇄합니다.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%m%n
# 로거 fout에 FileAppender를 추가합니다.
log4j.appender.fout=org.apache.log4j.FileAppender
# 어 펜더 FILE은 org.apache.log4j.FileAppender로 정의됩니다. SoftwareTestingHelp라는 파일에 기록합니다.
log4j.appender.fout.File=SoftwareTestingHelp.log
# 더 자세한 메시지 패턴을 사용합니다.
log4j.appender.fout.layout=org.apache.log4j.PatternLayout log4j.appender.fout.layout.ConversionPattern=%p %d{ISO8601} %r %c (%t) %m%n
다양한 로깅 수준
- 디버그
- 정보
- 경고
- 오류
- 치명적인
각 수준에는 고유 한 우선 순위가 있습니다. 'DEBUG'레벨을 사용한다고 가정하면 INFO >> WARN >> ERROR >> FATAL과 같은 모든 레벨 메시지를 기록합니다.
'ERROR'레벨을 사용하면 DEBUG >> INFO >> WARN을 무시하고 ERROR >> FATAL 만 기록한다고 가정합니다.
이 모든 레벨에서 속성 파일에서 정의해야합니다. 구성에 따라 로그가 생성됩니다.
위에서 언급 한 동일한 예에 대한 로그 구현 :
1 단계: Logger 클래스에 대한 개체를 만듭니다.
final static Logger logger = Logger.getLogger(Frame.class);
위의 방법은 로거 개체를 가져 오는 데 도움이됩니다. 이 메서드는 클래스 또는 클래스 이름을 인수로 사용합니다. 이 로거 개체를 사용하여 사용자 지정 로그를 생성 할 수 있습니다.
이 예에서는 apache log4j 프레임 워크를 참조했습니다. TestNG 프레임 워크를 사용하는 경우 TestNG 로그 클래스를 사용해야합니다.
여기서는 속성 파일을 구현하지 않고 로그를 생성하려고했습니다.
콘솔이나 생성 된 로그 파일에서 로그가 생성되지 않습니다. 로그 파일이 제대로 구현되지 않았기 때문에 콘솔에 오류가 수신됩니다. 이를 구현하려면 PropertyConfigurator 클래스를 사용해야합니다. 2 단계를 따르십시오.
2 단계: Property Configurator 파일을 초기화하고 인수를 log4j 속성 파일의 이름으로 전달합니다.
PropertyConfigurator.configure ( 'log4j.properties');
로그 파일 생성을위한 완전한 코드 :
package com.wordpress.pages; import java.util.List; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.junit.Assert; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class Frame { static WebDriver driver; final static Logger logger = Logger.getLogger(Frame.class); @Test public void Test(){ PropertyConfigurator.configure('log4j.properties.txt'); System.setProperty('webdriver.chrome.driver', 'D:\New folder\exe\chromedriver.exe'); logger.debug('Debug this path for chrome path issue'); driver = new ChromeDriver(); logger.info('Chrome driver is up and running'); driver.get('http://www.dwuser.com/education/content/the-magical-iframe-tag-an-introduction/'); logger.warn('Url is not loaded properly'); //identifying the frame using locator or say using webelement driver.switchTo().frame(driver.findElement(By.xpath('//div(@id='eduFooterWrap')//iframe(1)'))); logger.error('Frame is not available'); driver.findElement(By.xpath('//input(@name='name')')).sendKeys('SoftwareTestingHelp.com'); logger.fatal('Message not entered'); } }
속성 파일 :
결론
현재 튜토리얼에서 우리는 프레임 워크에서 로깅을 구현하는 동안 기술적 의미. 로깅을 구현하기 위해 log4j 유틸리티를 이용했습니다. 사용성 관점에서 log4j를 구성하는 기본 구성 요소에 대해 논의했습니다. Appender 및 레이아웃을 통해 사용자는 원하는 로깅 형식 / 패턴 및 데이터 소스 / 위치를 선택하는 데 활용됩니다.
이 자습서에서는 테스트 및 다루어 진 log4j 프레임 워크에서 로그가 사용되는 이유와 로그 생성을위한 Selenium의 log4j 프레임 워크 구현을 살펴 봅니다.
다음 튜토리얼 # 27 : 다음 튜토리얼에서는 다음과 관련된 몇 가지 고급 주제에 대해 논의 할 것입니다. 효율적인 스크립팅 및 시나리오 문제 해결 사용자가 마우스 및 키보드 이벤트를 처리해야하는 경우 또한 목록에 하나 이상의 웹 요소를 저장하는 방법에 대해서도 설명합니다.
추천 도서
- 초보자를위한 심층 이클립스 튜토리얼
- Selenium WebDriver 소개 – Selenium Tutorial # 8
- 효율적인 Selenium 스크립팅 및 문제 해결 시나리오 – Selenium 자습서 # 27
- Cucumber Selenium 튜토리얼 : Cucumber Java Selenium WebDriver 통합
- 30 개 이상의 최고의 셀레늄 튜토리얼 : 실제 예제로 셀레늄 배우기
- Selenium 스크립트 빌드를 위해 Chrome 및 IE 브라우저에서 요소를 찾는 방법 – Selenium Tutorial # 7
- 첫 번째 WebDriver 스크립트 구현 – Selenium WebDriver Tutorial # 10
- Eclipse로 WebDriver 전체 설정 및 설치 – Selenium Tutorial # 9