TestCafe .click не вызывает событие onClick внутри iFrame - PullRequest
1 голос
/ 22 марта 2019

Я пытаюсь автоматизировать платежную систему, в которой кнопка «Оплатить с помощью PayPal» находится внутри iFrame.Я искал страницы поддержки TestCafe и, похоже, не смог решить проблему.

TestCafe считает, что нажал кнопку, и на следующем шаге не удается (введите адрес электронной почты).

Что я использую:

const payPalFrame = Selector('#paypal-button iframe');
const payPalButton = Selector('[name="paypal"]')

async payWithPaypal () {
    await t
        .switchToIframe(payPalFrame)
        .click(payPalButton)
        .switchToMainWindow();
}

Я пытался написать ClientFunction, но все еще относительно плохо знаком с JS / Node и не смог заставить что-либо работать.

Ответы [ 2 ]

5 голосов
/ 22 марта 2019

Возможно, вы могли бы убедиться, что кнопка доступна следующим образом:

await t
  .switchToIframe(payPalFrame)
  .expect(payPalButton.with({visibilityCheck: true}).exists)
  .ok({timeout: 30000})
  .hover(payPalButton)
  .click(payPalButton)
  .switchToMainWindow();

Если это не работает, попробуйте нажать на родительский контейнер кнопки:

const payPalButton = Selector('[name="paypal"]').parent();
await t
  .switchToIframe(payPalFrame)
  .expect(payPalButton.with({visibilityCheck: true}).exists)
  .ok({timeout: 30000})
  .hover(payPalButton)
  .click(payPalButton)
  .switchToMainWindow();
0 голосов
/ 31 мая 2019

В testcafe есть ошибка, из-за которой iframes иногда не загружают свои таблицы стилей, поэтому вы можете проверить, имеют ли тег, который нужно щелкнуть в iframe, правильную ширину, высоту и положение.

...