source

트랙터 전역 변수 설정

manysource 2023. 11. 6. 21:55

트랙터 전역 변수 설정

모든 설명 블록에 사용할 트랙터의 전역 변수를 설정하려고 합니다.

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

저도 이 질문을 봤습니다. 트랙터 각도JS 전역 변수

그래서 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