프로젝터 구성 파일의 매개 변수에 액세스할 수 있습니까?
다음 작업을 수행하여 절단기 테스트를 시작합니다.
protractor protractor.conf.js --params.baseUrl=http://www.google.com --suite all
하나의 파라미터(이 경우는 baseUrl)에 의존하는 'before launch' 함수를 실행하고 싶습니다.그게 가능합니까?
exports.config = {
seleniumServerJar: './node_modules/protractor/selenium/selenium-server-standalone-2.45.0.jar',
seleniumPort: 4455,
suites: {
all: 'test/*/*.js',
},
capabilities: {
'browserName': 'firefox'
},
beforeLaunch: function() {
console.log('I want to access my baseUrl parameter here: ' + config.params.baseUrl);
},
onPrepare: function() {
require('jasmine-reporters');
jasmine.getEnv().addReporter(
new jasmine.JUnitXmlReporter('output/xmloutput', true, true));
}
};
이 설정을 실행하면 Configuration이 정의되어 있지 않기 때문에 ReferenceError가 표시됩니다.어떻게 하면 좋을까요?그게 가능하긴 해?
각도기 글로벌이 다음에서 설정되었는지 완전히 확신할 수 없습니다.beforeLaunch()
스테이지, 하지만 그들은 확실히 다음 장소에서 구할 수 있다.onPrepare()
걸음.
액세스params
전 세계를 통해 이의를 제기하다browser
오브젝트:
console.log(browser.params.baseUrl);
업데이트: Jasmine 2.6+, extractor 4.x, browser.params는 비어있었지만 다음 기능이 동작했습니다.onPrepare()
순서:
console.log(browser.baseUrl);
컨피규레이션파일 전체의 모든 항목이 필요한 경우,browser.getProcessedConfig()
이 일을 하기 위해서.
onPrepare: () => {
browser.getProcessedConfig().then(console.log); // even `params` is in here
}
다음은 Protractor 구성 파일에서 cmd 행 arg를 반복하고 명령줄에서 직접 사양(및 일부 다른 실행 구성 값)을 설정하는 샘플 코드입니다.
config.discloss 。
// usage: protractor config.js --params.specs="*" --params.browser=ie --params.threads=1
// protractor config.js --params.specs="dir1|dir2"
// protractor config.js --params.specs="dir1|dir2/spec1.js|dir2/spec2.js"
// process command line arguments and initialize run configuration file
var init = function(config) {
const path = require('path');
var specs;
for (var i = 3; i < process.argv.length; i++) {
var match = process.argv[i].match(/^--params\.([^=]+)=(.*)$/);
if (match)
switch (match[1]) {
case 'specs':
specs = match[2];
break;
case 'browser':
config.capabilities.browserName = match[2];
if (match[2].toLowerCase() === 'ie') {
config.capabilities.browserName = 'internet explorer';
config.capabilities.platform = 'ANY';
config.capabilities.version = '11';
config.seleniumArgs = ['-Dwebdriver.ie.driver=' + path.join('node_modules', 'protractor' ,'selenium' ,'IEDriverServer.exe')];
}
if (match[2] !== 'chrome' && match[2] !== 'firefox')
config.directConnect = false;
break;
case 'timeout':
config.jasmineNodeOpts.defaultTimeoutInterval = parseInt(match[2]);
break;
case 'threads':
config.capabilities.maxInstances = parseInt(match[2]);
config.capabilities.shardTestFiles = config.capabilities.maxInstances > 1;
break;
}
}
// generate specs array
specs.split(/\|/g).forEach(function(dir) {
if (dir.endsWith('.js'))
config.specs.push(dir);
else
config.specs.push(path.join(dir, '*.js'));
});
return config;
};
exports.config = (function() {
return init({
specs: [],
framework: 'jasmine',
jasmineNodeOpts: {
defaultTimeoutInterval: 300000 // 5 min
},
capabilities: {
browserName: 'chrome',
shardTestFiles: false,
maxInstances: 1
},
directConnect: true
});
})();
간단한 솔루션
프로젝터는 노드 프로세스입니다.모든 노드 프로세스는 커스텀노드 변수를 사용하여 시작할 수 있습니다.Windows 에서는 어떻게 동작하고 있는지는 잘 모르지만(방법을 알고 있는 경우는 코멘트해 주세요), Mac 및 Linux/unix OS 에서는 다음과 같은 환경변수로 프로젝터를 기동할 수 있습니다.
MY_VAR=Dev protractor tmp/config.js
그러면 프로세스 내 어디에서나 사용할 수 있습니다.
console.log(process.env.MY_VAR)
외부에서도 onPrepare
고객님의 구성
언급URL : https://stackoverflow.com/questions/29406962/can-i-access-parameters-in-my-protractor-configuration-file
'programing' 카테고리의 다른 글
엔티티 프레임워크용 데이터베이스를 재생성하는 방법 (0) | 2023.03.17 |
---|---|
이름이 이미 존재하여 Vagrant Up 실패 (0) | 2023.03.17 |
로그백 JsonLayout이 모든 로그를 같은 줄에 인쇄합니다. (0) | 2023.03.17 |
npm UNMET PEER Dependency 경고 수정 방법 (0) | 2023.03.17 |
상세 속성별 ngRepeat 필터 (0) | 2023.03.17 |