Selenium多窗口切换如何实现,思路方法是什么
Admin 2022-08-03 群英技术资讯 861 次浏览
这篇文章主要讲解了“Selenium多窗口切换如何实现,思路方法是什么”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。在做web端自动化测试用例编写过程中,大家有没有遇到窗口切换的情况,比如如下截图所示的商品列表页,点击任何一款产品后切换到这块产品详情页的情况。

此时浏览器中叠放了两个窗口, 如下截图这种情况;

或者出现打开两个浏览器窗口的情况,如下截图这种情况。

这两种窗口切换的情况下大家的自动化测试脚本是如何编写的呢?
还是不需要单独处理窗口切换?如果是使用selenium框架编写涉及窗口切换的自动化测试用例,肯定要单独处理窗口切换的情况。
那么为什么要对出现新窗口的情况单独处理呢?因为我们通过浏览器驱动对象访问指定url对应的是一个窗口X,当在窗口X执行某个操作(例如点击)导致新开一个页面或者新窗口Y,这种情况下selenium没有做智能处理,而把主动权交给了脚本编写人员来决定浏览器驱动对象在X还是Y窗口上模拟用户的操作行为。
那么接下来我们就需要去实现如何让窗口切换到我们预期的窗口,还是拿我们文章开头的例子来说吧,我需要从商品列表页切换到商品详情页,大体有4种解决方案,分别是:遍历找到预期窗口再进行切换、遍历过程中先切换窗口再判断预期窗口、指定窗口切换、多个条件判断预期窗口。接下来就需要解决我如何找到执行某个操作前后的窗口唯一标识,就像人和人之间的区别是身份证,出现商品列表页、商品详情页的情况下这两个窗口如何区分呢?
通过句柄,每个窗口都拥有一个唯一标识句柄,如果感兴趣的读者可以将句柄打印出来看看,其实就是一串作为唯一标识的字符串。
那么selenium框架web自动化情况下,我们如何来获取句柄呢?通过getWindowHandle()方法来获取当前页面的句柄。接下来我们尝试通过第一种解决方案遍历找到预期窗口再进行切换来获取,具体的代码实现逻辑为在执行点击某款产品前获取窗口句柄,然后定位某款产品元素并调用点击方法,然后调用getWindowHandles()方法获取当前所有打开窗口的句柄集合,也就是商品列表页以及商品详情页的句柄集合,接下来要做的就是遍历句柄集合中的元素,遍历的过程中判断当前这个句柄是否和点击操作前的句柄相同,如果不相同则切换到这个句柄对应的窗口,那么读者可能会问,切换窗口的方法是哪个?是switchTo()。下面给读者们提供一份样例代码块。

读者们平时写测试用例涉及到多窗口切换的情况下,一般用这个方法就可以搞定。当然如果非常确定执行点击等操作后只新开一个窗口的话,还可以使用指定窗口切换这个解决方案,代码的实现逻辑就比较简单了,区分于方案一的地方就是将句柄集合转换成数组,然后通过指定数组下标来实现窗口切换,如下是给大家提供的实现代码块:

如果出现多个叠加操作导致打开多个窗口的情况,还可以采用遍历过程中先切换窗口再判断预期窗口的方案,该方案区别于方案之处在于先执行窗口切换,然后再判断当前窗口句柄和预期的窗口句柄是否一致,如果一致,则停止遍历,依然给大家一段参考的实现代码,如下所示:

以上代码块中实现的停止切换窗口的条件是,当前切换到的窗口title属性值是否是我预期窗口的title属性值,如果是则停止继续切换窗口。看到这里有读者可能会问了,如果有多个窗口的title属性值都相同,这个方案就不管用了吧?是的,但是我们可以尝试替换判断条件,例如判断当前切换到的窗口url和预期的url是否一致,这个判断比较保险,不同的窗口对应的url一般是不同的,但是如果前端代码版本更新时修改了url,此时我们的测试用例该部分信息也需要跟着修改,不要郁闷还有其他的替代解决方案,判断条件可以有一个变成多个。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了python使用OpenCV实现多目标跟踪,如何在OpenCV中使用MultiTracker类实现多目标跟踪API。在深入了解详细信息之前,请查看下面列出的关于目标跟踪的帖子,以了解在OpenCV中实现的单个目标跟踪器的基础知识,需要的朋友可以参考一下
Python列表什么时候应用,常用操作有哪些?当我们需要存一个数据时,可以直接使用变量,但是,当我们要存储100个,设置更多的时候,变量肯定不行,这时候我们要用啥?此时列表就有它的用武之地了,一次性存储多个数据。
本文主要介绍了python数据处理之Pandas类型转换的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Pandas是Python语言的一个扩展程序库,是用于数据分析的。一些朋友可能对Pandas有一定的了解,文本主要介绍的是关于pandas提取单元格的值的操作,以下是示例,感兴趣朋友可以参考学习。
内容介绍题目描述解题思路/算法分析/问题及解决实验代码运行结果题目描述本次实验为连接数据库的实验,并对数据库进行一些简单的操作,要实现的基本功能如下所示,要能连接并展现数据库里的数据,能够实现插入功能
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008