AngularJS 앱용 테스트 제품군을 개발 중이며 다음 중 하나를 쓰는 동안 이상한 문제가 발생했습니다. 내가 해결할 수없는 테스트 스크립트.각도기로 AngularJS 테스트 - '정의되지 않은'요소가 이미 사용 된 경우에도 정의되지 않은 'click()'속성을 읽을 수 없음
테스트입니다 : 내가 테스트를 실행하면
it('should navigate to the Charts page', function() {
console.log("Start Charts page test");
browser.waitForAngularEnabled(false);
browser.wait(EC.elementToBeClickable(chartsMenuBtn), 5000).then(
browser.actions().
mouseMove(chartsMenuBtn).
chartsMenuBtn.click().
browser.wait(EC.urlIs(site + '/#/charts'), 5000).
perform()
);
})
, 그것은 이유를주고, 실패
Failed: Cannot read property 'click' of undefined
click()
가 호출되고 있다는 요소는 내가 정의
chartsMenuBtn
입니다
전 세계적으로 :
var chartsMenuBtn = element(by.linkText("Charts"));
따라서 요소가 명확하게 정의됩니다. 그 중 Protractor는 click()
에 대한 호출이 호출 된 시점에서 정의되지 않았다고 생각하는 것 같습니다. 실제로 실제로 바로 두 번 앞에 사용 되었기 때문에 각도기가 주장하는 지점에서 정의되지 않은 경우 그것은 두 가지 이전 용도에서도 분명히 정의되지 않았을 것입니다 ...?
chartsMenuBtn: ElementFinder { browser_: ProtractorBrowser { controlFlow: [Function], schedule: [Function], setFileDetector: [Function], getExecutor: [Function], getSession: [Function], getCapabilities: [Function], quit: [Function], actions: [Function], touchActions: [Function], executeScript: [Function], ...
요소가 명확하게 정의되어 있음을 보여주는 : 내 콘솔에서 다음
는 사실은 그냥 정의되지 않은 아니라는 것을 확인하기 위해, 직전 browser.wait(EC.elementToBeClickable(chartsMenuBtn), 5000).then(
라인에 browser.call(console.log("chartsMenuBtn: ", chartsMenuBtn));
라인을 넣어, 이것은 인쇄 그것이 사용되는 시점에서.
누구나이 테스트가 실패한 실제 이유는 무엇입니까? 올바르게 실행하려면 어떻게해야합니까?
나는 각도기를 모르지만 코드에서 "click()"은 "chartsMenuBtn"변수가 아니라 "chartsMenuBtn"이지만 mouseMove (chartsMenuBtn)의 반환 값 속성입니다. 당신은 끝으로 문장을 끝내고 세미콜론은 끝내지 않습니다. – Pablo
아, 그래, 내가 그 약속을 잘못 묶어 놓고있는 것 같아. 나는 당신이 제안한 것을 제공했지만, 이제는 오류 메시지 : '실패 : 알 수없는 오류 : 요소 ....'가 포인트 (40, 229)에서 클릭 가능하지 않습니다. 다른 요소는 클릭을 수신합니다. 그것은 버튼이 아니라 대화 상자 (내가 클릭하려고하는 버튼이 표시된 대화 상자)에 의해 클릭이 수신되었음을 나타냅니다 ... – someone2088
말한 것처럼 나는 각도기를 모르지만, 그러나 약속이 있다면 다음과 같이 할 필요가 있습니다. mouseMove (chartsMenuBtn) .then (function() {return chartsMenuBtn.click();}). then (function() {return browser.wait (EC.urlIs (사이트 + '/ #/차트'), 5000); }). perform();' – Pablo