• 12
  • 12
分享
  • Selenium ide对弹出窗口的处理——软件测试圈
  • 曼倩诙谐 2021-04-09 09:51:25 字数 2264 阅读 1897 收藏 12

  在web前端自动化测试过程种,经常会遇到各种弹出窗口:如浏览器新标签页的页面弹出窗口,告警、确认式的js弹出窗口,文件上传的windows弹出窗口等等。针对此类弹出窗口的处理,是前端自动化测试绕不过去的一个坎。接下来,我们来简单了解下这类弹出窗口的原理,和使用selenium+webdriver自动化方法处理方式,以及举例说明使用selenium ide工具的处理方法。

  一、几种弹出窗口介绍

  1.页面弹出窗口

  1)模态弹出窗口和非模态弹出窗口

  页面弹出窗口,即点击一个链接之后可能会打开一个新的浏览器窗口,跟之前的窗口是平行关系。

  页面弹出窗口又可以分为:模态弹出窗口和非模态弹出窗口。模态弹出窗口,即弹出窗口后,新窗口即更改为当前活动窗口,在该窗口关闭之前,其父窗口不可能成为活动窗口的窗口;非模态窗口与模态窗口相反,即使弹出窗口后,当前活动窗口仍为父窗口。

  假设当前父窗口为A,弹出窗口为B,在模态弹出窗口和非模态弹出窗口场景下,活动窗口如下表所示:

1-1.jpg

表1 模态弹出窗口与非模态弹出窗口的活动窗口区别

  2)Selenium+webdriver自动化的处理方式

  在selenium+webdriver自动化方法里,针对模态弹出窗口和非模态弹出窗口,常用的方法是保存父窗口和弹出窗口的title(标题)、url(链接)或handle(句柄),然后使用title或handle在不同的窗口间进行切换。如webdriver的title(),current_url()等方法获取当前页面的title和url,再使用switch_to.window()进行窗口切换。

  2.js弹出窗口

  1)alert、confirm、prompt弹出窗口

  javascript(简称:js)的告警(alert)、确认(confirm)、提示对话(prompt)三种对话框是通过调用window对象的三个方法alert(),confirm()和prompt()来获得,可以利用这些对话框来完成js的输入和输出,实现与用户能进行交互的js代码,而这三种对话框是无法通过浏览器获取到该框的元素的(如使用浏览提的element面板或selenium diriver的find element操作),也就是说alert是不属于网页DOM树的。

  2)Selenium+webdriver自动化的处理方式

  针对js弹出对话框,Selenium表示心有余而力不足。而常用的方法是:在webdriver 中处理JavaScript 所生成的alert、confirm 以及prompt 十分简单,具体做法是使用webdriver的 switch_to_alert()方法定位到 alert/confirm/prompt ,然后使用 text/accept/dismiss/send_keys等方法进行操作。

  3.windows弹出窗口

  1)文件上传弹出窗口

  在web自动化测试过程中,常见的windows弹出窗口非文件上传弹出窗口莫属。文件上传的实现大体分为两种,一种是input标签,一种非input标签这类窗口。

  2)Selenium+webdriver自动化的处理方式

  Selenium+webdriver处理简单的input标签上传方式要使用自动化上传不难,先定位到上传按钮,然后send_keys把路径作为值给传进去即可。而非input标签上传方式较为负责,自动化实现常借助于第三方库(如python的SendKeys模块、PyUserInput模块)或第三方工具AutoIt。

  针对非input标签的自动化上传坑点较多,本文暂不涉及。

  二、Selenium ide工具使用举例

  1.页面弹出窗口举例

  使用selenium ide自动化实现访问51testing网址中的“自动化测试工具及框架”菜单,弹出新网页窗口。父、子窗口切换使用select window方法,页面父、子窗口标识图如图1所示,自动化测试脚本如下图2所示。

1-2.jpg

图1 父、子网页窗口标识效果图

1-3.jpg

图2 selenium ide自动化切换父、子窗口代码示例

  2.js弹出窗口举例

  以alert弹出框举例。selenium ide在对弹出框进行定位后(如图3)所示,无法弹出对话框进行操作(selenium ide的不足)。这时,如果第三方引用selenium ide测试脚本,则需要手动在导出的测试脚本中添加driver.switch_to_alert()和alert.accept()等语句,如下图4所示。

1-4.jpg

图3 弹出alert窗口示例

1-5.jpg

图4 selenium ide导出脚本修改后截图

  3.windows弹出窗口举例

  以input标签上传文件弹出窗口举例,如点击上传图片文件替换简书账号头像,如下图5所示,使用selenium ide的type关键字,定位input标签的上传头像元素位置,输入文件路径即可,如图6所示。

1-6.jpg

图5 上传文件弹出窗口示例

1-7.jpg

图6 selenium ide上传文件代码示例

  三、小总结

  使用selenium+webdriver模式的前端自动化工具和框架很多,selenium ide只是其中一个,胜在录屏方便,快速回放。针对稍微复杂场景的测试,selenium ide就会暴露出短板,但作为前端自动化的学习,selenium ide还是不错的初始台阶。


作者:刘晓佳Rachel   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 在接口自动化测试过程中,存在部分公共配置、以及登录等信息需要存储,方便其他接口直接读取使用。这个时候可以用到yaml的写和读的功能。yaml基础语法等参考:https://mp-new.csdn.net/mp_blog/creation/editor/82011288yaml写-将公共配置和登录信息写入到yaml文件内#1-写入yaml文件 with open('config.yaml','w',encoding='utf-8') as f:     yaml.dump(bas...
            0 0 1988
            分享
          •   通用的测试管理过程主要可以分为三个部分:测试计划、测试监控和控制、测试完成。  从研发项目角度出发,测试管理过程可以用于不同级别的项目测试管理。  从测试阶段出发,测试管理过程可以用于不同测试阶段的测试管理,如集成测试、系统测试、验收测试等。  从测试类型出发,测试管理过程可以用于不同类型的测试管理,如功能测试、性能测试。  测试计划过程  测试计划过程用于制定测试计划。根据测试计划过程在项目中所处的位置不同,可以分为整体的测试计划(如系统测试计划),或某个类型的测试计划(如性能测试计划)。  创建一个测试计划,可以参考如下图1所示的过程。图1 测试计划过程  上图中箭头文字表示的是每一个...
            0 0 818
            分享
          •       相信很多测试的小伙伴也都遇到过这样的情况,往往产品上线,只要出现bug,成为“背锅侠”。      测试人员在工作中经常打交道的肯定是开发和产品经理,开发将程序写出来,测试员进行测试。软件测试完成后,产品才能生产,在这过程中,难免会遇到软件会出现问题的情况。那么你肯定听过这些话:“这么明显的bug你都测不出来吗?”“为啥这个功能还没测完就上线了?”“研发时间不够,你压缩一下测试时间”“这个bug和开发没关系,注意看需求”      听到这些话,相信你分分钟高血压,这个锅不知...
            0 0 2012
            分享
          •   做软件测试要想保质保量,就要做到测试充分,什么是测试充分,就是把所需要覆盖的场景都要覆盖到。  如何做到场景全面覆盖,特别是在时间紧任务重的时候?  我把我这些年来工作的一点经验总结一下分享给大家,希望对大家有点帮助:  No.1 提前介入测试  那么什么时候测试介入比较好?在需求明确下来进入开发之前,测试就可以介入了解需求的相关内容了。  这块一般有两个阶段:  第一个阶段是需求澄清阶段,这个阶段就是需求接口人向开发讲解需求的详细要求及实现功能,这个时候测试就可以参与进来一起听,听过之后我们就对这个需求有了一个大概的了解,知道了这个功能的是要做什么,输入输出是什么,为后期了解详细的实现方...
            14 13 2007
            分享
          •   1. 基本原理  相机外参标定,通过拍摄多角度棋盘格标定相机外参。   2. 外参标定板设计  标定板分为垂直标定板和水平标定板,由于地面的水平标定板不容易被检测到,本文采用垂直标定板进行相机标定。   在标定过程中标定板需要和车身坐标成正交状态,也就是标定板垂直边需要和地平面垂直、水平边需要和水平面垂直,且与车身中轴线保持水平状态,这里推荐设计标定板支架,利用支架调整标定板位置,具体的标定板设计如下图所示,标定板通过底部支架保证上下边缘与地平面水平。标定板与支架示意图  3. 垂直标定板摆放   垂直标定板的摆放如下图所示,这里需要注意,标定板在标定相机时需...
            0 0 1521
            分享
      • 51testing软件测试圈微信