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
'code' 카테고리의 다른 글
엔티티 프레임워크 및 MongoDb (0) | 2023.02.27 |
---|---|
시스템 위치런타임시리얼화Json 네임스페이스? (0) | 2023.02.27 |
비디오 자동 재생이 작동하지 않음 - 수정 프로그램 찾기 (0) | 2023.02.27 |
jQuery.ajax에서 content-type을 'application/json'으로 설정할 수 없습니다. (0) | 2023.02.27 |
Ajax를 사용하여 게시하는 동안 로드 이미지 표시 (0) | 2023.02.27 |