2017-03-04 3 views
0

Ich habe ein Problem zu identifizieren dynamisch generiert (mit JQuery oder ein Skript) Element in einem Listenfeld. Ich möchte einen bestimmten Marktwert auswählen, den ich dynamisch passiere. der Code die ich bisher verwendet habe, istVerwendung von nightwatch.js Wie kann ich dynamisch generiertes Element mit einem dynamisch bereitgestellten Wert auswählen

browser.useXpath().waitForElementVisible('.//*[@id="NIRPaymentReasonDropDown_1"]', 1000) 

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

enter image description here

hier pageValues.market ist ein dynamisch bereitgestellt Wert.

Kurz, ich möchte wissen, wie Click-Ereignis auf dem dynamisch generierten Listbox-Element mit einem dynamisch bereitgestellten Wert generieren. mit nightwatch.js

Bitte helfen Sie mir dieses Problem

+0

Haben Sie in http://nightwatchjs.org/api/switchWindow.html geschaut? – derp

+0

Danke @derp, das hat wirklich funktioniert :) –

Antwort

2

Nach einigem Versuch und Irrtum zu lösen aus, succeded i mit dieser Lösung den neu geöffnet Tabs von derselben Webseite

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') 
         }) 

ich zu handhaben möchte eine bessere Möglichkeit, die inspizierten Elemente in Seitenobjekte für diese neu erstellte Registerkarte zu speichern .. können Sie mir Anregungen oder Kommentare geben

+0

Nicht schlecht, wenn Sie Seitenobjekte verwenden, würde ich empfehlen, die Selektoren wie '# confirmation-modal',' .modal-title' usw. in den Elementbereich zu setzen. Auf diese Weise können Sie ihnen etwas aussagekräftiges nennen, zB 'elements: { 'paymentDetailTitle': '.modal-title' }' 'Befehle: [{'confirmPayment': function() { this.assert.containsText ('@ paymentDetailTitle ',' Payment Details '); }] ' – derp

+0

huh? hast du es nicht funktioniert? Ich mache nur einen Vorschlag zur Verwendung der Seitenobjekte basierend auf http://nightwatchjs.org/guide#page-objects – derp

Verwandte Themen