在测试框架中处理iFrames

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


如果你曾经尝试使用iFrames测试应用程序,可能知道随之而来的挫败感。😤从似乎不起作用的选择器到隐藏在测试框架中的元素,iFrames 因破坏最强大的自动化测试而臭名昭著。

在我担任 QA 工程师的过程中,我使用Cypress、Playwright和Selenium时无数次遇到了 iFrames 。起初,我不明白为什么我的选择器都无法在 iFrame 中工作。但随着时间的推移,我弄清楚了如何让它们正常工作。让我与你分享我的技巧和窍门!🎯

为什么 iFrames 这么棘手?

iFrame 就像是其他文档的小窗口。它们独立于父页面而存在,这使得与它们交互变得棘手。如果你尝试以与主页相同的方式访问 iFrame 内的元素,就会遇到麻烦。

秘诀在于切换上下文 -- 你需要告诉测试框架查看iFrame内部而不是外部。让我们深入了解如何使用Node.js处理 Cypress、Playwright 和 Selenium 中的 iFrame 。

Cypress

Cypress 不提供对 iFrames 的原生支持,但不用担心,可以使用一些智能代码来解决此限制!以下是我使用 jQuery 处理 Cypress 中的 iFrames 以操纵 iFrame 内容的方法。

cy.get ('iframe')。then (($ iframe)=> { const iframeContent = $iframe.contents ()。find('body');   cy.wrap (iframeContent)。find ( ' button' )。click(); });  

此代码首先抓取 iFrame 元素,提取其内容,然后在 iFrame 中找到所需元素(在本例中为按钮)。一旦运行起来,就像变魔术一样!✨

| 专业提示:Cypress 在浏览器内运行所有内容,因此以这种方式处理 iFrames 快速而高效。💡

Playwright

在 Playwright 中,iFrame 处理更加简单。以下是使用Node.js的示例:

const iframeElement = await page.frame ({ url:/iframe-url-part/ }); const button = await iframeElement.$('button-selector'); await button.click();

Playwright 提供了一种frame可以轻松定位 iFrames 的方法。在此示例中,我们使用部分 URL 匹配来定位 iFrame,然后找到其中的元素并与之交互。流畅又简单!

Selenium

Selenium 有点过时了,但它在 iFrames 方面仍然可以完成工作。以下是如何切换到 iFrame 并与其中的元素进行交互:

等待驱动程序.switchTo()。frame(驱动程序.findElement(通过.css('iframe-selector')));
让按钮=等待驱动程序.findElement(通过.css('button-selector'));
等待按钮.click();

在 Selenium 中,需要使用switchTo().frame()将上下文切换到 iFrame。进入后,可以像在普通页面上一样与元素进行交互。完成后,请记住使用以下命令切换回主内容:

等待驱动程序.switchTo()。defaultContent();

| 专业提示:Selenium 的冗长可能会有点麻烦,但掌握框架和主文档之间的切换将使脚本坚如磐石。

我的一些个人建议和技巧:

  1. 了解 iFrame 来源:知道 iFrame 内容来自何处。某些 iFrame 是跨源的,这意味着由于安全限制,无法与它们交互。😬

  2. 使用适当的选择器:始终确保选择器针对 iFrame 内的元素,而不是外部元素。如果仔细检查选择器,调试 iFrame 会容易得多。🔍

  3. 注意时间:iFrame 的加载时间可能比父页面更长。确保在脚本中使用适当的等待时间处理此问题。🕒

  4. 切换回:在 Selenium 中,与 iFrame 交互完成后,不要忘记切换回主内容。否则,后续测试可能会失败!🚨

最后的话:

处理 iFrames 乍一看似乎很麻烦,但只要采取正确的策略,你很快就能掌握它们。无论你使用的是 Cypress、Playwright 还是 Selenium,这些框架都有工具可以帮助你高效地使用 iFrames。根据我自己的经验,关键是要有耐心,并了解每个工具如何与 iFrame 上下文交互。

现在你已经掌握了这些技巧,iFrames 就不会再减慢你的测试速度了!💥

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
在这里插入图片描述​​
在这里插入图片描述​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值