我正在尝试自动执行付款流程,用户点击“审核和付款”按钮,然后点击“付款”,在弹出屏幕(下方)中确认付款:
定位器:
var reviewPaymentPopup = element(by.css("#cdk-overlay-0"));
var makePaymentButton = element(by.buttonText("Make Payment"));
注意:我注意到的一件事是,reviewPaymentPopup重叠数似乎在...... -0,...- 1和...- 2之间变化。我认为这是我问题的一部分。
但要点击我试过的弹出窗口中的“付款”按钮:
reviewAndPayButton.click().then(function() {
browser.waitForAngular().then(function() {
makePaymentButton.click();
});
});
和
reviewAndPayButton.click().then(function() {
browser.wait(makePaymentButton.isDisplayed, 5000);
}).then(function() {
makePaymentButton.click();
});
甚至这个垃圾
reviewAndPayButton.click();
browser.sleep(2000);
reviewPaymentPopup.isPresent();
browser.sleep(500);
browser.switchTo().activeElement();
browser.wait(EC.visibilityOf(makePaymentButton), 500);
makePaymentButton.click();
编辑: 错误返回:
Failed: No element found using locator: By(css selector, #cdk-overlay-3 > md-
dialog-container > payment-review-dialog > div.dialog-footer > button.mat-
raised-button.mat-primary)
NoSuchElementError: No element found using locator: By(css selector, #cdk-
overlay-3 > md-dialog-container > payment-review-dialog > div.dialog-footer >
button.mat-raised-button.mat-primary)
at elementArrayFinder.getWebElements.then
(/usr/local/lib/node_modules/protractor/lib/element.ts:851:17)
这段代码:
reviewAndPayButton.click().then(function() {
browser.waitForAngular().then(function() {
browser.getAllWindowHandles().then(function (handles) {
browser.switchTo().window(handles[1]).then(function () {
makePaymentButton.click();
});
});
});
});
...返回:
Failed: null value in entry: handle=null
WebDriverError: null value in entry: handle=null
所以,我的代码显然无法找到makePaymentButton。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以通过屏幕截图更清楚地了解您的问题。 要点击“付款”,您应该尝试: var payment = element(by.xpath('.//* [。=“Make Payment”]')); 比,使用payment.click()你要使用的地方。