기록 노드 환경의 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