2016-10-11 6 views
1

다음 코드는 this에 따라 "/ assets/css /"로 시작하는 href attribute의 요소를 수집하도록 설계되었습니다. 내가 인쇄하지 않습니다하지만 그러나 다음과 같은 오류 여기browser.elements()에서 반환 된 요소를 사용하는 방법은 무엇입니까?

TypeError: Cannot read property 'value' of undefined

var styleSheetsElems = browser.elements('[href^="/assets/css/"]').value; 

for (let iter1 in styleSheetsElems) 
{ 
    console.log(browser.elementIdAttribute(iter1, 'href').value); 
}; 
  • 내가 요소가 존재하는 것을 볼 수 있습니다와 하나 browser.elementIdAttribute(iter1, 'href').value 또는 browser.elementIdAttribute(iter1, 'href') 충돌에 액세스하는 첫 번째 시도는 (내가 배열을 통과 할 수).

내 이해 styleSheetsElems의 채우기가 반드시 href ... 기존 갖는 요소에 대한

인쇄를 보증한다는 것이다. 파고 그래서 운이

{ state: 'success', 
    sessionId: '652f9f1c-6cad-42d7-89a3-e09a1acbd1af', 
    hCode: 1951176523, 
    value: 
    [{ ELEMENT: '11' }, 
    { ELEMENT: '12' }, 
    { ELEMENT: '88' }], 
    class: 'org.openqa.selenium.remote.Response', 
    selector: '[xyz]', 
    _status: 0 } 

더 ... elements('[xyz]') 결과 더

쿼리에 대한 올바른 구문은 다음과 같이이었다
+0

iter1을 인쇄 한 적이 있습니까? 충돌 전의 가치는 무엇입니까? – GreenAsJade

+0

은 0입니다 (첫 번째 요소). 하지만 그것을 건너려고하면 요소 1에서 충돌이 발생합니다 ... – Peter

+0

그래서 요소 0과 1 모두 'href'가 포함되어 있지 않은 것처럼 들립니다. 어떻게 모든 요소가 실제로 무엇인지 보려면'browser.elements ('[href^= "/ assets/css /"]') '를 출력 하시겠습니까? – GreenAsJade

답변

2

:

var styleSheetsElems = browser.elements('[href^="/assets/css/"]').value; 

for (let iter1 in styleSheetsElems) 
{ 
    console.log(browser.elementIdAttribute(styleSheetsElems[iter1].ELEMENT, 'href').value); 
}; 

도와 몇 가지 테스트를 밖으로 인쇄했다 GreenAsJade의 제안에 따라 배열의 내용 .. 그런 다음 'iter1'은 해당 배열에 저장된 elementID와 동일하다는 가정을하고 있음을 깨달았습니다. 많은 감사합니다!

+0

을 게시 할 수 있습니다. :) 이야기의 도덕적 인 내용 : 가정을 테스트하기 위해 물건을 인쇄하십시오 (일명 "이해";)). 이 시점에서 문서가 좋지 않다는 것을 말해야합니다 : 나는이 라이브러리를 사용하지 않았으며 문서에서 '.ELEMENT'에 대한 주석을 보았고 그 내용을 볼 수 없었습니다. 혼란스러워했다. – GreenAsJade