我没有 iframe ID 或 XPath,我想在 iframe 下的文本框中输入数据

I don't have iframe ID or XPath, and I want to type data into textbox under the iframe

我有一个网站,我正在测试支付流程。如何与 iframe 下的元素进行交互。 请检查我网站的HTML代码。

iframe src link 每 30 分钟更改一次,所以我不能将它用作选择器。 请让我知道任何更好的想法。

我不能确定这一点,因为你没有共享页面 URL 或整个 HTML。
正如我在这里看到的,您可以尝试通过 XPath 定位 iframe,如下所示:

//iframe[contains(@src,'hpc.uat.freedompay.com/apy/v1.5/controls')]

我遇到了同样的问题,这是我解决的方法:

cy.get('.__PrivateStripeElement > iframe') // selector of the iframe
      .then(function ($foo) {
      const $iFramebody = $foo.contents().find('body')
  
      cy.wrap($iFramebody)
        .find(".CardNumberField-input-wrapper input") // selector of the field
        .type('4242424242424242122912355101');      // typing the value          
      });

您可以使用 cypress inspector 工具找到 iframe 的最佳唯一选择器。 更多信息可以在赛普拉斯创始人之一的文章中找到:https://www.cypress.io/blog/2020/02/12/working-with-iframes-in-cypress/

  1. 安装 cypress-iframe 节点包。

  2. 在您的 cypress/support/commands.js 文件中,添加以下内容:

import 'cypress-iframe';
  1. 然后在你的测试中写:
cy.iframe('iframe[src*="uat.freedompay.com"]')
  .find('#CardNumber')
  .type('4444333322221111')