TestCafe .click不会在iFrame中触发onClick事件

时间:2019-03-22 17:14:07

标签: iframe automated-tests e2e-testing testcafe clicking

我正在尝试使iPa内的“使用PayPal付款”按钮自动化的付款系统。我已经搜索了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 个答案:

答案 0 :(得分:5)

也许您可以确保以这种方式使用该按钮:

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();

答案 1 :(得分:0)

testcafe中存在一个错误,即iframe有时不加载其样式表,因此您可能要检查iframe中需要单击的标记是否具有正确的宽度,高度和位置。