Selenium ide对弹出窗口的处理(弹出窗口代码)
在web前端自动化测试过程中,经常会遇到各种弹出窗口:如浏览器新标签页的页面弹出窗口,告警、确认式的js弹出窗口,文件上传的windows弹出窗口等等。针对此类弹出窗口的处理,是前端自动化测试绕不过去的一个坎。
接下来,我们来简单了解下这类弹出窗口的原理,和使用selenium+webdriver自动化方法处理方式,以及举例说明使用selenium ide工具的处理方法。
几种弹出窗口介绍
页面弹出窗口
1) 模态弹出窗口和非模态弹出窗口
页面弹出窗口,即点击一个链接之后可能会打开一个新的浏览器窗口,跟之前的窗口是平行关系。
页面弹出窗口又可以分为:模态弹出窗口和非模态弹出窗口。模态弹出窗口,即弹出窗口后,新窗口即更改为当前活动窗口,在该窗口关闭之前,其父窗口不可能成为活动窗口的窗口;非模态窗口与模态窗口相反,即使弹出窗口后,当前活动窗口仍为父窗口。
假设当前父窗口为A,弹出窗口为B,在模态弹出窗口和非模态弹出窗口场景下,活动窗口如下表所示:
表1
模态弹出窗口与非模态弹出窗口的活动窗口区别
2) Selenium+webdriver自动化的处理方式
在selenium+webdriver自动化方法里,针对模态弹出窗口和非模态弹出窗口,常用的方法是保存父窗口和弹出窗口的title(标题)、url(链接)或handle(句柄),然后使用title或handle在不同的窗口间进行切换。
如webdriver的title(),current_url()等方法获取当前页面的title和url,再使用switch_to.window()进行窗口切换。
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等方法进行操作。
windows弹出窗口
1) 文件上传弹出窗口
在web自动化测试过程中,常见的windows弹出窗口非文件上传弹出窗口莫属。文件上传的实现大体分为两种,一种是input标签,一种非input标签这类窗口。
2) Selenium+webdriver自动化的处理方式
Selenium+webdriver处理简单的input标签上传方式要使用自动化上传不难,先定位到上传按钮,然后send_keys把路径作为值给传进去即可。而非input标签上传方式较为负责,自动化实现常借助于第三方库(如python的SendKeys模块、PyUserInput模块)或第三方工具AutoIt。
针对非input标签的自动化上传坑点较多,本文暂不涉及。
Selenium ide工具使用举例
页面弹出窗口举例
使用selenium ide自动化实现访问51testing网址中的“自动化测试工具及框架”菜单,弹出新网页窗口。
父、子窗口切换使用select window方法,页面父、子窗口标识图如图1所示,自动化测试脚本如下图2所示。
图1 父、子网页窗口标识效果图
图2
selenium ide自动化切换父、子窗口代码示例
js弹出窗口举例
以alert弹出框举例。selenium ide在对弹出框进行定位后(如图3)所示,无法弹出对话框进行操作(selenium ide的不足)。
这时,如果第三方引用selenium ide测试脚本,则需要手动在导出的测试脚本中添加driver.switch_to_alert()和alert.accept()等语句,如下图4所示。
图3 弹出alert窗口示例
图4 selenium ide导出脚本修改后截图
windows弹出窗口举例
以input标签上传文件弹出窗口举例,如点击上传图片文件替换简书账号头像,如下图5所示,使用selenium ide的type关键字,定位input标签的上传头像元素位置,输入文件路径即可,如图6所示。
图5 上传文件弹出窗口示例
图6 selenium ide上传文件代码示例
小总结
使用selenium+webdriver模式的前端自动化工具和框架很多,selenium ide只是其中一个,胜在录屏方便,快速回放。针对稍微复杂场景的测试,selenium ide就会暴露出短板,但作为前端自动化的学习,selenium ide还是不错的初始台阶。
推荐阅读
-
华强北耳机和苹果耳机有啥区别(华强北苹果耳机跟正版有什么区别)
-
痛风食谱菜谱大全
痛风食谱菜谱大全男性到中年后,痛风食谱菜谱大全,最大的痛苦莫过于钱包鼓了,身子却垮了。现在都市人不健康的生活方式和过度劳累,让我们...
-
口里总是苦是什么原因(嘴里苦是什么原因)
大家好,今天来为大家解答嘴里苦是什么原因这个问题的一些问题点,包括口里总是苦是什么原因也一样很多人还不知道,因此呢,今天就来为大家...
-
全身美白产品排行榜10强(全身美白的产品)
全身美白的产品美白护肤是一项相对特殊的护肤方式,全身美白的产品,大家目前可以选购的美白功效护肤品,都是有特证认证的产品,也是官方认...
-
黄粱是小米吗(黄粱是小米还是水稻)
黄粱是小米。黄粱是一种粟米,粟米因为颗粒细小,又叫做小米,黄粱原产中国北方,是古代黄河流域重要的粮食作物之一,关于黄粱的典故有黄粱...
-
黑头黑脚的是什么动物(黑头黑脚代表什么动物)
黑头黑脚代表的动物是黑熊。黑熊全身的毛发都是黑色的,所以由此得来黑熊的称呼,黑熊的头部和脚部都是黑色的,所以黑头黑椒代表的动物是黑...
-
贵州选调生报考条件及时间2023年(贵州选调生报考条件及时间2023)
考研是场持久战,也是场信息战。每年临近暑假,就有很多院校发布公告,调整考研初试科目。这不,23考研人马上就又被“摆了一道”,又有几...
-
上海市公务员考报名时间2023时间(上海市公务员考报名时间2023)
2023年国考笔试考试延期举行,那2023年省考会延期吗?2023年省考对于已经发布招录考试简章地区,目前都已报名结束,进入笔试环...
-
银耳怎么吃降糖效果最好(银耳怎么吃)
银耳怎么吃说到银耳,银耳怎么吃,相信大家都不陌生了,经常拿来煲汤做糖水什么的!银耳口感脆爽,营养丰富,银耳富含维生素D,能防止钙的...
-
2023年纳音五行属什么命(2023年纳音)
2023年为农历【癸卯年】,属兔人为水兔之命。通过六十甲子纳音表查询可知,纳音为金箔金命,山林之兔。公元2023年,公历平年,共3...