code

browser.ignoreExtractor 동기화란?

starcafe 2023. 2. 27. 23:27
반응형

browser.ignoreExtractor 동기화란?

사람들이 사용하자고 하는 것을 여러 번 봐왔습니다.

browser.ignoreSynchronization=true;  // or false

근데 왜 우리가 그걸 필요로 하는지 이해가 안 돼요.

간단한 답변은 각도 약속을 기다리지 않게 하는 것입니다. 예를 들어, 각도 약속 같은 것.$http또는$timeout해결할 수 있도록 하기 위해 필요한 작업입니다.$http또는$timeout(예: "로드" 메시지) 또는 별도의 로그인 페이지와 같은 비각도 사이트 또는 페이지를 테스트합니다.

예를 들어, 요청 중에 로딩 메시지를 설정하는 단추를 테스트하려면 다음과 같이 설정할 수 있습니다.true요소를 가져올 때 + 요소 내용 확인

element(by.css('button[type="submit"]')).click();
browser.ignoreSynchronization = true;
expect(element(by.css('.message')).getText().toBe('Loading...');    
browser.ignoreSynchronization = false;
expect(element(by.css('.message')).getText().toBe('Loaded'); 

더 복잡한 답은 그것을 로 설정하는 것입니다.true제어 흐름에 대한 후속 추가/제한이 추가되지 않음을 의미합니다.browser.waitForAngular·제어 흐름에 대한 이해와 그 추가/주입 시기, 방법 등이 중요한 경우가 있다.예를 들어,browser.wait다단계 과정을 테스트하기 위해 전달되는 기능wait테스트의 나머지 기능이 제어 흐름에 추가된 후 제어 흐름에 주입됩니다.

element(by.css('button[type="submit"]')).click();
browser.ignoreSynchronization = true;
expect(element(by.css('.message')).getText().toBe('Stage 1');
browser.wait(function () {
   // This function is added to the control flow after the final
   // browser.ignoreSynchronization = false in the test
   // so we need to set it again here 
   browser.ignoreSynchronization = true;
   return element(by.cssContainingText('.message', 'Stage 2')).isPresent().then(function(isPresent) { 
     // Cleanup so later tests have the default value of false
     browser.ignoreSynchronization = false;
     return !isPresent;
   });
});
expect(element(by.css('.message')).getText().toBe('Stage 2');
browser.ignoreSynchronization = false;
expect(element(by.css('.message')).getText().toBe('Stage 3');

사용의 대체 수단browser.ignoreSynchronization표준 웹 드라이버 API에 직접 접속하는 것입니다.

element(by.css('button[type="submit"]')).click();
expect(browser.driver.findElement(by.css('.message')).getText().toBe('Loading...');    
expect(element(by.css('.message')).getText().toBe('Loaded'); 

드라이버 방법을 사용하여 요소를 직접 찾는다는 것은 시스템이 진행 중인 요소를 기다리지 않고 요소를 찾으려 한다는 것을 의미합니다.$http종료 요청(설정과 유사)browser.ignoreSynchronization = true.

이 설정은 프로텍터가 페이지에서 각을 대기해야 하는지 여부를 제어합니다.적절하게 문서화되어 있지 않습니다만, 코드의 문서 문자열을 다음에 나타냅니다.

/**
   * If true, Protractor will not attempt to synchronize with the page before
   * performing actions. This can be harmful because Protractor will not wait
   * until $timeouts and $http calls have been processed, which can cause
   * tests to become flaky. This should be used only when necessary, such as
   * when a page continuously polls an API using $timeout.
   *
   * @type {boolean}
   */

즉, 비각부위 - 세트에 대해 테스트하는 경우ignoreSynchronization설정true실제의 예로서, 각이 없는 페이지를 각진 페이지에서 열었을 때의 과제 중 하나를 참조해 주세요.클릭각도가 아닌 페이지가 열렸다.

2021년 답변

browser.ignoreSynchronization요즘엔 아무것도 아니야.말 그대로

이 명령어는 2018년 1월 25일 절단기로 인해 폐지되었습니다.v5.3.0해방되었다

대신browser.waitForAngularEnabled()사용되어야 한다

하지만 그것이 무엇을 하고 무엇을 하는지ignoreSynchronization이 기능을 사용하면 각도 응용 프로그램을 대기하기 위해 Protractor의 내장 핸들링이 가능합니다.로그인 버튼을 클릭하면 'sleep for 10seconds' 명령이나 '애니메이션 로딩이 종료될 때까지 대기' 명령 등을 사용할 필요가 없습니다.이론상으로는 이 모든 것은 개봉 후 바로 사용할 수 있는 절단기가 담당해야 합니다.

그러나 실제로는 이 기능을 사용할 수 없고 스크립트가 중단되기 때문에 이 기능을 비활성화해야 하는 경우가 너무 많습니다.그리고 이때가 바로await browser.waitForAngularEnabled(false)작동하게 됩니다. ★★★await browser.waitForAngularEnabled(true)

사용법을 확인하다

언급URL : https://stackoverflow.com/questions/28808463/what-is-browser-ignoresynchronization-in-protractor

반응형