견인기를 천천히 작동시킬 수 있습니까?
프로텍터를 사용하여 작성된 Angular E2E 테스트를 천천히 실행하여 상황을 볼 수 있는 방법이 있습니까?
그것을 하기 위한 나의 해결책은 다음과 같습니다.그래서 기본적으로 전류 제어 흐름을 위한 데코레이터를 만들었습니다.execute
각 큐잉액션 전에 100밀리초의 지연을 큐잉합니다.
테스트를 호출하기 전에 실행해야 합니다(외부).describe
블록)
var origFn = browser.driver.controlFlow().execute;
browser.driver.controlFlow().execute = function() {
var args = arguments;
// queue 100ms wait
origFn.call(browser.driver.controlFlow(), function() {
return protractor.promise.delayed(100);
});
return origFn.apply(browser.driver.controlFlow(), args);
};
조지 스토커가 댓글에서 말한 것처럼 왜 이걸 하고 싶어 하는지...시험에서는 원하는 곳이라면 언제든지 잠을 추가할 수 있습니다.
browser.sleep(6000);
이전 답변은 회피책에 가깝습니다.다른 방법은 다음과 같이 Protractor 설정에 param을 추가하는 것입니다.
highlightDelay: 1000
다음으로 변경합니다.
directConnect: false
클릭이나 입력과 같은 프로젝터 동작이 1초간 지연되고 밝은 파란색으로 강조 표시됩니다.
다음 명령을 코드에 입력하여 '디버깅 모드'로 들어갈 수 있습니다.
browser.pause();
디버깅 모드에서는 단말기에 다음 출력이 표시됩니다.
------- WebDriver Debugger -------
ready
press c to continue to the next webdriver command
press d to continue to the next debugger statement
type "repl" to enter interactive mode
type "exit" to break out of interactive mode
press ^C to exit
다음과 같이 할 수 있습니다.
- 명령어를 실행하여 명령어를 실행합니다.
c
- 다음 디버거 문으로 계속 진행합니다(다음).
browser.pause()
)를 입력해 주세요.d
- 모든 요소와 상호작용할 수 있는 인터랙티브 모드로 들어갑니다.
repl
이를 위한 2가지 방법
1. 첫 번째는 매우 유치한 방법이지만, 저는 여기에 두겠습니다.
대화하고 있는 요소를 강조 표시할 수 있습니다.
highlightElement: async ($elementObject, time = 1000) => {
async function setStyle(element, style) {
const previous = await element.getAttribute('style');
await element.setAttribute('style', style);
await setTimeout(() => {
element.setAttribute('style', previous);
}, time);
}
await browser.sleep(time)
return await browser.executeScript(await setStyle, $elementObject.getWebElement(), 'color: red; background-color: yellow; z-index: 9999;');
},
그러면 요소가 잠시 강조 표시됩니다.
그런 다음 이 요소를 사용하여 동작을 정리합니다.
let click = async function ($elem) {
await highlightElement($elem);
await $elem.click();
}
let sendKeys = async function ($elem, text) {
await highlightElement($elem);
await $elem.sendKeys(text);
}
그런 다음 이를 사용하여 몇 가지 스크립트를 시도합니다.
await sendKeys($login, username);
await sendKeys($password, password);
await click($submit);
이것은 실제 대본에서는 사용할 수 없습니다.사용할 때만 사용할 수 있습니다.
2. 코드 에디터에서 디버깅 구성을 설정합니다.
vs 코드 https://medium.com/ @ganesh sirsi / how-to-protractor-in-visual-fc-code-e945fc971a74의 예이지만 웹스톰에서도 마찬가지입니다.
이를 통해 코드를 한 줄씩 실행하고 실시간으로 변수와 상호 작용할 수 있습니다.절단기를 사용하는 모든 사람이 가지고 있어야 합니다.저는 진심이에요.
언급URL : https://stackoverflow.com/questions/24960290/can-protractor-be-made-to-run-slowly
'prosource' 카테고리의 다른 글
SSL을 사용하는 nginx 역프록시 뒤의 도커에서 워드프레스 (0) | 2023.04.03 |
---|---|
Angularjs - 다이렉트링크 함수의 $rootScope (0) | 2023.04.03 |
구문 오류 예기치 않은 토큰 U JSON (0) | 2023.04.03 |
JSON은 Python 사전을 어떻게 직렬화합니까? (0) | 2023.04.03 |
Woocommerce 관리 제품 목록에서 열을 추가/제거하는 방법 (0) | 2023.04.03 |