자동화 된 테스트를 할 nightwatch 프런트 엔드

기록 노드 환경의 nightwatch, 셀레늄 서버, 자동화 된 테스트 프로젝트 빌드 프로세스의 배포 후 첫 페이지에 chromedriver.

1. 목적

자동으로 페이지 요소를 결정하기 위해, 로그인, 사이트를 열고 버튼을 클릭, 로그, 스크린 샷 등을 확인할 수 있습니다, 배포 후 프런트 엔드 테스트 프로젝트를 자동화 할 수 있습니다.

2. 프로젝트 구조

다음으로도 전체 구조이다 :

node_modules 종속성입니다

시험 보고서의 출력은;

사양은 여러 개의 파일을 넣을 수있는 콘텐츠 규칙을 테스트;

즉 nightwatch.conf nightwatch 구성;

입학 시험 프로젝트 파일을 runner.js;

package.json 프로젝트 패키지 정보;

README.md 프로젝트에 대한 설명입니다.

다음은 빌드 프로세스에 대한 설명 :

2.1의 추가 사양을 프로젝트 디렉토리 자동 테스트를 작성, 하위 디렉토리를보고

다음과 같이 루트 디렉토리에 package.json 추가 :

1  {
 2    "이름": "자동 테스트" ,
 3    "버전": "1.0.0" ,
 4    "저자": "wangshiyuan" ,
 5    "설명" "자동 depolyment 후 프론트 엔드 프로젝트를 검사" ,
 6    "스크립트" {
 7      "테스트": "노드 ./runner.js"
 8    },
 9    "키워드" :
 10      "E2E" ,
 11      "자동 테스트"
 12    ,
 13    "엔진" :
{ 14      "노드" "> = 6.0.0" ,
 (15)     "NPM" "> = 3.0.0"
 16    }
 17    "devDependencies" {
 18      "chromedriver": "^ 78.0.1" ,
 19      "교차 스폰": "^ 5.0.1" ,
 20      "nightwatch" "^ 0.9.12" ,
 21      "셀레늄 - 서버", "^ 3.0.1"
 22    }
 23 }
참고 노드와 NPM 환경, chromedriver 필요 일관성 및 브라우저 버전, 

2.2 추가 nightwatch.conf.js 파일
1  // http://nightwatchjs.org/gettingstarted#settings-file 
2  // 구성 항목을 볼 수있는 공식 웹 사이트로 이동 할 수 있습니다 특정 nightwatch 
3  // chormedriver 주소 
4  // http://chromedriver.storage.googleapis.com/index .html 중에서 
. 5 module.exports = {
 . 6      src_folders : '스펙' ,
 7.      output_folder '리포트' ,
 8.      custom_assertions_path '' ,
 9.      셀레늄 {
 10        start_process : 참으로 ,
 11.        server_path 다음 필요한 ( '셀레늄 - 서버') .path,   // 셀레늄 서버의 제공 항아리 패키지 경로
12        호스트 '127.0.0.1' ,
 13        포트 : 9009 ,
 14        cli_args {
 15          'webdriver.chrome.driver은'( 'chromedriver')를 필요로.   // 设置chromedriver的항아리包路径
16        }
 17      }
 18      test_settings을 {
 19        기본 : {
 20          selenium_port : 9009 ,
 21          selenium_host : '로컬 호스트' ,
 22          침묵 : 사실 ,
 23 일          전역 ""
 24        },
 25        크롬 : {
 (26)         desiredCapabilities {
 27            browserName '크롬' ,
 28            javascriptEnabled : 사실 ,
 29            acceptSslCerts : 사실 
30          }
 31        }
 32        파이어 {
 33          desiredCapabilities {
 34            browserName '파이어 폭스 ,
 35            javascriptEnabled : 사실 ,
 36            acceptSslCerts : 진실 
(37)          }
 38        }
 39      }
 40    }
 41   

참고 :

src_folders : [ '스펙'], // 테스트 규칙 디렉토리는 디렉토리를 추가 할 필요가 
output_folder '보고서', // 테스트 출력 디렉토리의 요구를 디렉토리에 추가 할 수

2.3 추가 runner.js

1 process.env.NODE_ENV = '검사'
 2 하자 OPTS을 process.argv.slice = (2 )
 (3)  
(4)  의 경우 (opts.indexOf ( '- 구성') === -1 ) {
 5    OPTS = opts.concat ( [ '--config', 'nightwatch.conf.js' ])
 6  }
 7  경우 (opts.indexOf ( '- ENV') === -1 ) {
 8    OPTS opts.concat = ([ '- ENV ','크롬 ' ])
 9  }
 10  
11 CONST 스폰 =은 (필요한'크로스 산란 ' )
 12 CONST 러너 = 스폰 ('./ node_modules / .BIN / nightwatch 'OPTS {STDIO'상속 '})
 (13)  
(14) runner.on ( '출구',함수 (코드) {
 15    process.exit (번호)
 (16)  })
 17  
18 runner.on ( '오류', 함수 (ERR) {
 19    투사 ERR
 20 })

는 config에 파일 이름 참고 :

OPTS opts.concat = ([ '- 설정', 'nightwatch.conf.js' ])

여러 개의 파일을 추가 할 수 있습니다 (임의의 이름 여기) 사양에 2.4 demo.js 파일을 추가합니다

1 module.exports = {
 2    '테스트 데모' 기능 (브라우저) {
 3  
4      하자 URL = "https://192.168.3.13/demo '
 5  
6      // 启动浏览器并打开页面
7      browser.maximizeWindow ()
 8      browser.url (URL)
 9      browser.waitForElementVisible ( 'div.login', 3000 )
 10      browser.assert.elementPresent ( 'input.el-input__inner' )
 11      browser.assert.elementPresent ( 'input.el-input__inner' )
 12  
13      browser.click ( 'button.el-button.el 버튼 - 기본' )
 14     browser.pause (3000 )
 15      browser.waitForElementVisible ( '# 앱', 3000 )
 16      browser.assert.visible ( 'div.layer 제어' )
 17      browser.click ( 'div.layer 제어 .el - 체크 박스' )
 18      browser.pause (3000 )
 19      '헤더 RT'
 20      browser.click ( 'ul.header-RT> 리튬 : n 번째 자식 (3)'). 일시 정지 (4000 )
 21      browser.back ()
 22      browser.click ( 'ul.header-RT> 리튬 : n 번째 자식 (4)') 일시 정지 (4000. )
 23      browser.back ()
 24      browser.click ( 'ul.header-RT> 리튬 : n 번째 자식 (5)' ).일시 정지 (4000 )
25      browser.getLog ( '브라우저, 함수 (로그) {
 26        console.info (로그)
 27      })
 28      browser.pause (3000 )
 29      browser.saveScreenshot ('리포트 / smrt.png ' )
 30      browser.end ()
 31    }
 32 }

시작 페이지가 로그인 버튼을 클릭하는 효과 등의 일부 버튼 가시성 출력 로그, 스크린의 판단 결과, 특정 수를 참조하는 API의 nightwatch 규칙 ( https://nightwatchjs.org/api )

2.4 테스트 실행

프로젝트 디렉토리에 cmd를 설치 후 폴더 종속 증가 node_modules를 설치 설치 NPM 입력;

cmd를 입력 노드 runner.js 테스트가 자동으로 수행 열 사양 실행 (CMD) 결과 출력 주장의 지배하에 설치된 브라우저를 디렉토리 테스트 결과 및 스크린을 갖보고된다.

 

 

3. 참고

chromedriver 버전은 일관성 및 브라우저 버전, 자신의 확인 다시는 설치 후 구성 항목 packjson.json chromedriver 변경이 필요합니다.

참조 :

nightwatch :  https://nightwatchjs.org/api

셀레늄 :  https://github.com/SeleniumHQ/selenium/wiki/Logging

 

추천

출처www.cnblogs.com/jyughynj/p/11928241.html