Cypress之处理页面弹框以及多tab页间切换

上次博客讲解了如何模拟键盘输入和鼠标操作以及拖动页面元素,此次课程将介绍如何处理页面弹框,保证测试案例继续运行。另外,还会介绍如果测试案例跨多个tab页,如何实现多tab页间切换测试。最后介绍cypress框架提供的插件和自定义命令功能,为了完成此次课程目标,拆分了2个task。

  • 处理页面弹框
  • 多tab页间切换
  • 使用插件或自定义命令功能

接下来就从第一个task开始吧。

处理页面弹框

实际cypress在浏览器中运行时发出了很多事件,其中就包括监听alert或者confirm弹框,并允许控制弹框行为。默认情况下,会对弹框进行确认处理,也提供了入口让用户自定义如何处理弹框。例如下面web页面,当点击populate按钮时,会弹出一个confirm弹框。

编写自动化脚本,Test Runner中选择“handleAlertDialog_spec.js”运行下面的脚本。运行过程中并没有看见confirm弹框,因为cypress默认进行了确认处理。Test Runner上查看脚本运行日志,可以在console中看到对alert弹框做了确认处理。

   it("should cypress confirm alert dialog successfully", () => {
        cy.visit("https://devexpress.github.io/testcafe/example/");
        cy.get('#populate').click();
    });
  //可以看到,上面脚本只是打开被测页面完成点击按钮操作,没有任何脚本处理alert弹框。

 查看Test Runner左侧的运行日志,可以看到对alert框做了确认处理,下图是处理日志记录。

除默认确认操作外,还可以根据alert弹框信息,用户自定义弹框处理结果。下面脚本对弹框做拒绝处理,等同于点击confirm弹框的cancel按钮。

  it("should change alert dialog behavior successfully", () => {
        cy.on('window:confirm', (str) => {  
            //cy.on('window:confirm')监听页面弹出的alert、confirm弹框

            if (expect(str).to.eq('Reset information before proceeding?')) {
                return false
                //return fasle表示对弹框做拒绝处理,等于点击弹框上的cancel按钮

            } else {
                return true
               //return true或者不返回任何值表示对弹框做确认处理,等于点击弹框上的confirm按钮 
            }
        });
        cy.visit("https://devexpress.github.io/testcafe/example/");
        cy.get('#populate').click();
    });

 查看上面脚本运行日志,可以看到console中对弹框做了拒绝处理。日志记录如下图所示。

Cypress框架在浏览器中运行时,除监听confirm、aler弹框外,还监听应用运行的异常信息,这个在上次课程中也提到过。例如下面的脚本,默认情况下,cypress监听到被测应用存在未捕获的异常信息就会终止测试脚本运行,并显示错误信息。如果运行过程中,不期望被测应用的异常阻止测试脚本运行,那么可以return false。

it("should handle dialog successfully",()=> {
        Cyp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

taoli-qiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值