트랙터 전역 변수 설정
모든 설명 블록에 사용할 트랙터의 전역 변수를 설정하려고 합니다.
var glob = 'test';
describe('glob test', function () {
it('should set glob', function () {
browser.get('http://example.com/test');
browser.executeScript(function () {
window.glob = glob;
});
});
});
하지만 이것은 나에게 다음과 같은 오류를 반환합니다.
Message:
[firefox #2] UnknownError: glob is not defined
그래서 conf.js에서 변수 glob을 다음과 같이 설정하려고 했습니다.
exports.config = {
...,
onPrepare: function () {
global.glob = 'test';
}
};
여전히 같은 오류를 가지고 있습니다.
트랙터 테스트에서 적절한 전역 변수를 추가하려면 어떻게 해야 합니까?
의 도움으로 Protractor 구성 파일에서 전역을 설정할 수 있습니다.params
속성:
exports.config = {
// ...
params: {
glob: 'test'
}
// ...
};
다음을 사용하여 사양으로 액세스할 수 있습니다.browser.params.glob
.
참조 구성 파일을 참조합니다.
params 개체는 Tractor 인스턴스로 직접 전달되며 browser.params로 테스트에서 액세스할 수 있습니다.임의의 개체이므로 테스트에 필요한 모든 것을 포함할 수 있습니다.이는 명령줄을 통해 다음과 같이 변경할 수 있습니다.
protractor conf.js --params.glob 'other test'
업데이트:
스크립트가 함수 개체로 제공되는 경우 해당 함수는 대상 창에 주입하기 위한 문자열로 변환됩니다.스크립트 외에 제공되는 모든 인수는 스크립트 인수로 포함되며 인수 개체를 사용하여 참조할 수 있습니다.
그래서 이 경우 자바스크립트 스코프는 작동하지 않습니다. 당신은 다음으로 전달되는 기능을 합니다.browser.executeScript
스펙과 같은 종결 변수는 없을 것입니다.browser
. 그러나 다음 변수를 명시적으로 전달할 수 있습니다.
browser.executeScript(function (glob) {
// use passed variables on the page
console.log(glob);
}, browser.params.glob);
다음에서 전역 변수를 설정할 수도 있습니다.onPrepare()
사용.global
:
onPrepare: function () {
global.myVariable = "test";
},
그러면, 당신은 그냥.myVariable
시험 내내 그대로
사실 이게 어떻게.protractor
,browser
기타 내장 글로벌 변수를 전 세계적으로 사용할 수 있도록 했습니다.
Runner.prototype.setupGlobals_ = function(browser_) {
// Export protractor to the global namespace to be used in tests.
global.protractor = protractor;
global.browser = browser_;
global.$ = browser_.$;
global.$$ = browser_.$$;
global.element = browser_.element;
global.by = global.By = protractor.By;
// ...
}
이러한 접근 방식은 전역 범위/이름 공간을 오염시키므로 주의해야 합니다.
다른 옵션은 공정 변수를 사용하는 것입니다.
트랙터는 노드 프로세스입니다.사용자 지정 노드 변수를 사용하여 노드 프로세스를 시작할 수 있습니다.윈도우에서 어떻게 이루어지는지 확실하지 않지만(방법을 알고 있다면 댓글을 달아주세요), Mac과 모든 Linux/Unix OS에서는 가능합니다.
이와 같은 환경변수를 사용하여 트랙터
MY_VAR=Dev protractor tmp/config.js
그러면 프로세스 내 어디에서나 사용할 수 있고 심지어 구성에서도 사용할 수 있습니다.
console.log(process.env.MY_VAR)
제가 답변에 조금 늦었다는 것을 알지만, 여기 파일 전체에서 사용할 수 있는 글로벌 변수를 설정하는 또 다른 방법이 있습니다.
describe("Some Global most outer describe", function(){
var glob = "some global variable";
var blob = "some other global variable";
it('should test glob', function(){
expecte(glob).toEqual("some global variable");
});
it('should test blob', function(){
expecte(glob).toEqual("some other global variable");
});
describe('Some inner describe', function(){
//Some other inner tests can also see glob and blob
});
});
언급URL : https://stackoverflow.com/questions/31203398/protractor-set-global-variables
'source' 카테고리의 다른 글
gcc는 정적 변수를 자동으로 0으로 초기화합니까? (0) | 2023.11.06 |
---|---|
MySQL의 10진수(3,2) 값은 항상 9.99입니다. (0) | 2023.11.06 |
html 코드를 mysql에 저장하는 가장 좋은 방법은 무엇입니까? (0) | 2023.11.06 |
Jquery $(이) 하위 선택기 (0) | 2023.11.06 |
메인 스레드가 종료되면 다른 스레드도 종료됩니까? (0) | 2023.11.06 |