Javascript 使用nightwatch.js如何选择具有动态提供值的动态生成项

Javascript 使用nightwatch.js如何选择具有动态提供值的动态生成项,javascript,selenium,testing,automation,nightwatch.js,Javascript,Selenium,Testing,Automation,Nightwatch.js,我在识别列表框中存在的动态生成(使用JQuery或某些脚本)元素时遇到了一个问题。我想选择一个我动态传递的特定市场价值。 到目前为止,我使用的代码是 browser.useXpath().waitForElementVisible('.//*[@id="NIRPaymentReasonDropDown_1"]', 1000) browser.useXpath()。单击('/*[@id=“NIRPaymentReasonDropDown_1”]/span[1]/span/span[1]')) 。

我在识别列表框中存在的动态生成(使用JQuery或某些脚本)元素时遇到了一个问题。我想选择一个我动态传递的特定市场价值。 到目前为止,我使用的代码是

browser.useXpath().waitForElementVisible('.//*[@id="NIRPaymentReasonDropDown_1"]', 1000)
browser.useXpath()。单击('/*[@id=“NIRPaymentReasonDropDown_1”]/span[1]/span/span[1]'))
。单击('/*[@id=“NIRPaymentReason\u 1\u listbox”]/li[text()=“+pageValues.market+”)

这里pageValues.market是一个动态提供的值

总之,我想知道如何使用动态提供的值在动态生成的listbox项上生成click事件。使用nightwatch.js


请帮助我解决此问题

经过多次尝试和错误,我成功地使用此解决方案来处理同一网页上新打开的选项卡

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

我想要一种更好的方法来将检查过的元素存储在这个新创建的选项卡的页面对象中。你能给我一些建议或评论吗?

经过几次尝试和错误,我成功地使用这个解决方案来处理同一网页的新打开的选项卡

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

我想要一种更好的方法来将检查过的元素存储在这个新创建的选项卡的页面对象中。你能给我一些建议或评论吗

你研究过了吗?谢谢@derp,真的解决了:)你研究过了吗?谢谢@derp,真的解决了:)不错,如果你正在使用页面对象,我建议将诸如
#确认模式
。模式标题
等选择器放入元素部分。这样,您可以给它们命名一些有意义的名称,例如
元素:{'paymentDetailTitle':'.modal title'}
命令:[{'confirmPayment':函数(){this.assert.containsText('@paymentDetailTitle','PaymentDetails');}]
嗯?你没让它工作吗?我只是建议使用页面对象,基于不错,如果你使用的是页面对象,我建议将选择器,如
#确认模式
。模式标题
,等放入元素部分。这样你可以给它们命名一些有意义的东西,例如
元素:{'paymentDetailTitle':'.modal title'}
命令:[{'confirmPayment':function(){this.assert.containsText('@paymentDetailTitle','Payment Details');}]
嗯?你没有让它工作吗?我只是建议基于