2013-11-14 2 views
0

내가 잘 작동 다음 E2E 테스트가 대신 개수/길이 인쇄 텍스트

  var results = ptor.findElements(protractor.By. 
        repeater('phone in phones').column('phone.name')); 
      results.then(function(arr) { 
      expect(arr.length).toEqual(2); 
     }); 

, 나는 텍스트에 대한 결과를 확인하는 테스트를 갖고 싶어을, 같은 :

var results = ptor.findElements(protractor.By. 
       repeater('phone in phones').column('phone.name')); 
     results.then(function(arr) { 
     expect(arr.getText()).toEqual(....); 
    }); 

BU : 각도기 구문을 사용하여

expect(repeater('.phones li', 'Phone List').column('phone.name')). 
     toEqual(["Motorola XOOM\u2122 with Wi-Fi", 
       "MOTOROLA XOOM\u2122"]); 

하지만

, 나는 다음과 같은 있지만 이동을 시도하지 t getText() 오류가 발생했습니다. "arr"배열에서 텍스트를 가져 오는 방법은 무엇입니까?

이 작동 :

  ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name')) 
      .then(function(arr) { 
       arr[0].getText().then(function(text) { 
        console.log("*** first: "+text); 

       }); 
       arr[1].getText().then(function(text) { 
        console.log("*** second: "+text); 

        done(); 
       }) 
      }); 

답변

1

문제는 당신이 당신의 방법을 체인하는 방법입니다. 요소 조회는 WebElement를 다시 가져 오는 것입니다. 당신이 정말로 원하는 것은 getText()에 의해 반환 된 약속 객체입니다. 일단 약속이 해결되면 텍스트로 무엇인가하고 싶다면 getText() 호출의 끝으로 'then'호출을 연결해야합니다. 그래서 대신 :

results.getText().then(function(resultText) { 
    expect(resultText).toEqual(....); 
}) 
+0

내가하는 방식으로 작품을 만든 마지막 편집하지만, 전체 행을 얻을뿐만 아니라 "phone.name"

results.then(function(arr) { expect(arr.getText()).toEqual(....); }); 

실제로 이런 일을합니다. 이제는 phone.name을 얻는 방법을 알아 내려고 노력하고 있는데, 전체 행이 아닌 arr [0] .getText()에 표시됩니다. – bmw0128