2017-03-04 9 views
0

동적으로 생성 된 (JQuery 또는 일부 스크립트 사용) 요소를 목록 상자에 표시하려면 문제가 있습니다. 나는 동적으로 전달하는 특정 시장 가치를 선택하고 싶다. 내가 지금까지 사용했던 코드는 nightwatch.js 사용 동적으로 제공된 값을 사용하여 동적으로 생성 된 항목을 선택하는 방법

enter image description here

browser.useXpath().click('//*[@id="NIRPaymentReasonDropDown_1"]/span[1]/span/span[1]') .click('//*[@id="NIRPaymentReason_1_listbox"]/li[text()="' + pageValues.market + '"]')

browser.useXpath().waitForElementVisible('.//*[@id="NIRPaymentReasonDropDown_1"]', 1000) 
여기 pageValues.market가 동적으로 제공하는 값입니다.

단락, 동적으로 제공되는 값으로 동적으로 생성 된 목록 상자 항목에서 클릭 이벤트를 생성하는 방법을 알고 싶습니다. 사용 nightwatch.js

친절이 문제 여러 가지 시행 착오 후

+0

http://nightwatchjs.org/api/switchWindow.html을 살펴 보셨습니까? – derp

+0

정말 고맙습니다 @derp : –

답변

2

를 해결하기 위해 나를 도와, 나는 동일한 웹 페이지

browser.windowHandles(function(result) { 
          var authorizePopup = result.value[1]; 
          this.waitForElementVisible('#confirmation-modal', 2000) 
          this.switchWindow(authorizePopup); 
          this.assert.containsText(".modal-title", "Payment Details"); 
          this.click('#confirm-checkbox') 
           .click('#submit-payment-btn') 
         }) 

I의 새롭게 문을 연 탭을 처리 할 수있는이 솔루션 succeded 이 새로 생성 된 탭에 대한 페이지 객체에 검사 된 요소를 저장하는 더 좋은 방법을 원합니다. 제안이나 의견을 내게 줄 수 있습니다.

+0

페이지 객체를 사용하는 경우,'# confirm-modal','.modal-title' 등과 같은 선택자를 요소 섹션에 넣는 것이 좋습니다. ''paymentDetailTitle': .modal-title ' }' '명령 : [{'confirmPayment ': function() { this.assert.containsText ('@ ' paymentDetailTitle ','Payement Details '); }]' – derp

+0

응? 작동시키지 않았 니? http://nightwatchjs.org/guide#page-objects에 기반한 페이지 객체 사용에 대한 제안을하고 있습니다. – derp