量角器 - 在弹出窗口中单击元素

时间:2017-06-15 17:27:23

标签: javascript protractor qa

我正在尝试自动执行付款流程,用户点击“审核和付款”按钮,然后点击“付款”,在弹出屏幕(下方)中确认付款:

enter image description here

定位器:

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。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以通过屏幕截图更清楚地了解您的问题。 要点击“付款”,您应该尝试: var payment = element(by.xpath('.//* [。=“Make Payment”]')); 比,使用payment.click()你要使用的地方。