Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >你不知道的Cypress系列(7) -- 当iFrame遇见弹出框

你不知道的Cypress系列(7) -- 当iFrame遇见弹出框

作者头像
iTesting
发布于 2021-04-25 08:07:19
发布于 2021-04-25 08:07:19
2.8K00
代码可运行
举报
文章被收录于专栏:iTestingiTesting
运行总次数:0
代码可运行

iTesting,爱测试,爱分享

转眼之间,你不知道的Cypress系列已经到第7篇了。在Cypress中国群内、在公众号iTesting里,我每天都能看到大量关于Cypress的使用讨论和私下问询。这让我感到无比荣幸(买了书的同学们,公众号回复你的微信号,拉你到Cypress中国群)。

今天是你不知道的Cypress系列(7) -- 当iFrame遇见弹出框

自从Cypress出现后,Cypress就在吊打一切Web端测试框架。虽然Cypress这么优秀,但它也有一些妥协和倔强,除了第6节的多Tab外,还包括这么一条:

  • iframes not supported

这是多么的简单直接!于是,出现了这么一幕,很多同学悄咪咪的问我:“蔡老师,Cypress不支持iframe啊,iframe都不支持,你怎么还敢推广它?”

一般这种情况我会说,不支持不代表不可以测试啊!只是使用Cypress测试iFrame不那么方便罢了。

什么是iFrame

iFrame是Inline Frame的缩写。百度百科说它的作用是文档中的文档,或者浮动的框架(FRAME),iFrame元素会创建包含另外一个文档的内联框架(即行内框架)。

我相信你看了这个定义会跟我跟我一样丈二和尚摸不着头脑,我们用人话重新说一遍:

iFrame是HTML元素的组件,iFrame元素允许你在你的网站中包含来自其他网站的内容。例如,你在各种网站上看到的内嵌的视频,就是iFrame在起作用。

它的用法也很简单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<iframe src="https://www.youu.com/embed/dXBohfjc4WA" width="680" height="480" allowfullscreen></iframe>

使用iFrame的好处是它可以将你的用户尽可能的保留在你自己的网站中。但是,过多的使用iFrame会出现安全性方面的问题,并且如果iFrame内容加载缓慢,也会影响到你页面的加载速度。

iFrame其实是个上古的前端技术,当前的Web应用程序很少使用iFrame了(所以那位说自己的应用程序很多iFrame的同学,你可以考虑换工作了 )。

iFrame较多,不建议用Cypress

原因如下:

  1. Cypress当前没有提供原生的命令来访问iFrame。
  2. iFrame的快照不会显示在TestRunner里,导致使用Cypress调试包含iFrame的代码非常不方便。

弹出框

弹出框也是自动化测试,特别是We吧端自动化测试的一个难道, 弹出框一般包括如下几种:

alert

confirm

prompt

我出道题,特别简单

好了,现在我有个需求,需要你测试下这个页面:

你点击下“运行代码”,然后再点击试一试,这个时候会出现一个警告框,你把警告框关掉。

先不要看解决方案,你先自己写下代码看, 网址如下(在Cypress中国群某个群里说过这个问题,结果很酸爽):

https://www.w3school.com.cn/tiy/t.asp?f=js_alert

Cypress操作iFrame和弹出框

有的同学说了,我用了Cypress后,再也不想用Selenium/Webdriver了。但是我的应用程序包含Cypress,我该怎么办?

不废话了,看Cypress如何处理这种情况:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    it('测试alert', () => {
        cy.visit('https://www.w3school.com.cn/tiy/t.asp?f=js_alert')
        cy.get('iframe').then(($iframe) => {
        const $body = $iframe.contents().find('body')
        cy.log('iTesting is good!',$body[1])
        const $win = $iframe[1].contentWindow
        cy.stub($win, 'alert').as('windowAlert')
        cy.wrap($body[1])
            .contains('试一').click().should(function () {
                expect(this.windowAlert).to.be.calledWith('我是一个警告框!')
            })
        })
    })

注意如下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    cy.get('iframe')
    cy.stub($win, 'alert').as('windowAlert')

这两个代码是关键,建议好好查查,实在不行,群里问问。

课后作业

我知道你一定会问,所以我偷偷的给你准备了一个简单的题目,超级简单哦:

请访问如下页面,然后试着测试下这里的超链接。我相信,你一定会回来找我的:)

https://www.w3school.com.cn/tiy/t.asp?f=js_confirm

https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_prompt


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iTesting 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
你不知道的Cypress系列(3) -- 是时候重构自己的思维了!
在跟同学们的交流中,我也了解到, 原来除了国外优秀的公司(例如Adobe, 迪士尼,AutoDesk等等), 国内也有很多公司在尝试使用Cypress提升测试效率。
iTesting
2021/01/04
2.3K0
你不知道的Cypress系列(11) -- 使用cy.session()加速鉴权。
今天是你不知道的Cypress系列(11) -- 使用cy.session()加速鉴权。
iTesting
2021/10/14
3.3K0
你不知道的Cypress系列(11) -- 使用cy.session()加速鉴权。
你不知道的Cypress系列(9) -- 代码“自动生成”术​
本标题有哗众取宠之嫌,不过也侧面说明了测试行业内卷的程度。如果你有关注最新测试技术的习惯,你会发现,很多多年前就有的技术,最近几年又换了个皮卷土重来,比如,Codeless, BPA。本篇所介绍的代码 “自动生成”术,可以叫做Codeless,但既然已经在装X了,干脆叫代码”自动生成“术好了。
iTesting
2021/06/15
1.7K0
你不知道的Cypress系列(9) -- 代码“自动生成”术​
你不知道的Cypress系列(5) -- "眼瞎"的TestRunner​
关于TestRunner, 我想大家都已经非常熟悉了。在我的的书中也有其各个用法的专门介绍,这里不再赘述。
iTesting
2021/03/18
2.3K2
你不知道的Cypress系列(5) -- "眼瞎"的TestRunner​
你不知道的Cypress系列(1) --鸡肋的BDD
Behavioural Driven Development (BDD)是从TDD发展来的(什么,TDD你都不知道?!),它通过自然语言定义系统行为,以功能使用者的角度,编写需求场景,且这些行为描述可以直接形成需求文档,同时也是测试标准。
iTesting
2020/12/15
1.6K0
你不知道的Cypress系列(1) --鸡肋的BDD
你不知道的Cypress系列(8) -- “可视化”测试你知多少?
断言是自动化测试中比较繁琐的一个动作,特别是当你要检查的点比较多的时候。在以往的测试中,如果要检查页面元素是否符合我们期望,我们通常通过一个个的断言来进行。
iTesting
2021/04/25
3.1K0
你不知道的Cypress系列(8) -- “可视化”测试你知多少?
你不知道的Cypress系列(15) -- 支持跨域访问了!
说起Cypress,读者朋友们应该对“下一代Web端自动化测试技术”,“弯道超车首选”等等早已烂熟于心了。Cypress独特的运行机制(运行在浏览器内)也使得它吊打Webdriver之类的UI自动化测试工具。但是Cypress并不是完美无瑕,我们在使用Cypress做自动化测试时,经常会提的一个问题就是,Cypress不支持跨域访问,而我的测试需要跨域怎么办?
iTesting
2022/04/28
2.6K0
你不知道的Cypress系列(15) -- 支持跨域访问了!
Cypress web自动化37-cy.wrap() 操作 iframe 上的元素
iframe 是一种常见的 web 页面上遇到的场景,像有些网站的登录就是放到 iframe 里面的。 cypress 如何处理 iframe 上的元素呢,cypress 目前没有提供类似 selenium 上的 switch_to.frame 这种直接切换的方法,得自己封装一个操作方法。
上海-悠悠
2020/06/17
2.3K0
前端自动化测试框架cypress
自动化测试是一种测试方法,是指使用特定的软件,去控制测试流程,并比较实际结果与预期结果之间的差异。通过将测试自动化,可以把人对软件的测试行为转化为由机器自动执行测试的行为,从而替代大量的手工测试操作,使得测试可以快速,反复的进行。
javascript艺术
2022/01/11
2.2K0
前端自动化测试框架cypress
你不知道的Cypress系列(13) -- 你真的需要多浏览器测试吗?
在自动化测试过程中,特别是Web端UI自动化测试过程中,发现很多同学对多浏览器测试/跨浏览器测试有很多误区, 今天来尝试解答下。
iTesting
2021/11/25
1.8K0
Cypress简易入门教程
1)安装node.js(https://nodejs.org/en/download/),根据版本选择32位或64位。
顾翔
2020/06/18
5.6K0
你不知道的Cypress系列(14) -- 一文说透元素定位
元素定位可以说是UI自动化测试的基础,没有元素定位,UI自动化就无从谈起。一般来说,一个好的定位器应该有如下4个属性:
iTesting
2022/03/30
2K0
你不知道的Cypress系列(14) -- 一文说透元素定位
一篇文章带你了解JavaScript弹出框
警告框是最简单的弹出框。它使可以向用户显示一条短消息。还包括“确定”按钮,用户必须单击此“确定”按钮才能继续。
前端进阶者
2021/04/13
2.1K0
一篇文章带你了解JavaScript弹出框
你不知道的Cypress系列(4) -- “PO”已死,App Action当立?
今天是你不知道的Cypress系列(4) -- “PO”已死,App Action当立?
iTesting
2021/02/26
1.2K0
你不知道的Cypress系列(4) -- “PO”已死,App Action当立?
你不知道的Cypress系列(2) -- ”该死"的PO模型​!
自从我的新书<前端自动化测试框架 -- Cypress从入门到精通>上市以来,这本书受到了大量同学热情的追捧和讨论。在跟同学们的交流中,我也了解到, 原来除了国外优秀的公司(例如Adobe, 迪士尼,AutoDesk等等), 国内也有很多公司在尝试使用Cypress提升测试效率。而在Cypress中国群内、在公众号iTesting里,我每天都能看到大量关于Cypress的使用讨论和私下问询。这让我感到无比荣幸。(买了书的同学们,公众号回复你的微信号,拉你到Cypress中国群)。
iTesting
2021/01/04
2.4K1
你不知道的Cypress系列(6) -- 多Tab的小秘密
自从Cypress出现后,市面上Web端自动化测试框架就只剩下了两个: 一个是吊打一切的Cypress, 另一个是其它。虽然Cypress这么优秀,但它也有一些妥协和倔强,其中就包括这么一条:
iTesting
2021/04/08
3.8K2
你不知道的Cypress系列(10) -- CypressHelper
今天是. 你不知道的Cypress系列(10) -- CypressHelper。
iTesting
2021/09/24
1.1K0
你不知道的Cypress系列(12) -- 测试报告Allure
Allure 报告是基于标准的 xUnit 结果输出,再添加补充数据而生成的,其报告的生成基于如下两个步骤。
iTesting
2021/10/27
3.7K1
Layui 弹出框
layui.use('layer', function(){ var layer = layui.layer;
用户5760343
2019/10/25
4.5K0
[Cypress最新版本]Cypress10.x版本安装、使用指南
最近两年测试界最火的测试工具莫过于Cypress,作为测试工程师弯道超车必备、下一代UI自动化测试利器,Cypress开发团队也一直在拼命做事,这不,Cypress10.x重磅发布,将“Component Testing”重磅引入到了测试团队。测试人员又可以将自己的势力版图向开发侧移动一下啦 :)
iTesting
2022/09/01
2.4K0
[Cypress最新版本]Cypress10.x版本安装、使用指南
推荐阅读
相关推荐
你不知道的Cypress系列(3) -- 是时候重构自己的思维了!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验