2016-08-14 4 views
2

에서 목록에있는 요소의 수를 얻기 나는 다음과 같은 DOM 구조가 : 나는 위의 목록에있는 항목의 수를 반환하는 명령을 작성하려합니다Nightwatch

<div data-qa-id="criteriaDisplay"> 
    <ul> 
     <li>...</li> 
     <li>...</li> 
     <li>...</li> 
    </ul> 
</div> 

합니다. 나는 Nightwatch의 초보자입니다. 이것을하기위한 나의 시도가있다. 내 생각은 criteriaDisplay 요소 아래의 <ul>으로 시작한 다음 <li> 수를 계산합니다. 그래서 elementIdElements API를 사용하는 것을 시도하고있다, 그러나 그것은 작동하지 않습니다 :

var criteriaDisplayCommands = { 
    getNumberOfItems: function(callback) { 
     var self = this; 
     console.log(this); 
     return this.api.elementIdElements('@myList', 'css selector', 'li', function(result) { 
      callback.call(self, result); 
     }); 
    } 
}; 

module.exports = { 
    url: function() { 
     return this.api.launchUrl + '/search'; 
    }, 

    sections: { 
     criteriaDisplay: { 
      selector: '[data-qa-id="criteriaDisplay"]', 
      commands: [criteriaDisplayCommands], 
      elements: { 
       myList: 'ul' 
      } 
     } 
    } 
}; 

사람이 작업을 수행하려면 올바른 방법 좀 도와 주시겠습니까? 내가 그나마

답변

3

이 잘 생각 : elementIdElements 이후

return this.api.elementIdElements('@myList', 'css selector', 'li', function(result) { 
    callback.call(self, result); 
}); 

elementId 될 수있는 첫 번째 매개 변수가 필요합니다. 귀하의 경우 해당 CSS 선택기.

두 번째는 셀렌 API에서 사용자 지정 선택기를 사용하고 있는지 잘 모르겠습니다. 당신이 "@ 자사의 이름으로 요소를 참조 할 수 있습니다 요소 속성을 사용

다음 doc's section about defining-elements에서

을 나는이 거 작업이라고 생각 해달라고 (하지만 난 이것에 대해 확실하지 않다) 요소 명령 및 어설 션 (click 등)을 호출 할 때 선택기가 아닌 접두사.

셀렌 API를 사용하고 명령이나 어설 션을 사용하지 않으므로 올바른 입력이 아닐 것이라고 생각합니다.

당신은 당신의 결과, 또는 elementelementIdElements의 조합을 얻기 위해 elements를 사용할 수 있습니다.

this.api.elements('css selector', 'ul li', function (result) { 
    console.log(result.value.length) //(if there are 3 li, here should be a count of 3) 
    callback.call(self, result); 
});` 
+0

감사 @dominik : 아래와 같이

간단한 것은 단지 elements를 사용한다. – Naresh