我没有 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/
安装 cypress-iframe 节点包。
在您的 cypress/support/commands.js 文件中,添加以下内容:
import 'cypress-iframe';
- 然后在你的测试中写:
cy.iframe('iframe[src*="uat.freedompay.com"]')
.find('#CardNumber')
.type('4444333322221111')
我有一个网站,我正在测试支付流程。如何与 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/
安装 cypress-iframe 节点包。
在您的 cypress/support/commands.js 文件中,添加以下内容:
import 'cypress-iframe';
- 然后在你的测试中写:
cy.iframe('iframe[src*="uat.freedompay.com"]')
.find('#CardNumber')
.type('4444333322221111')