我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Selenium多窗口切换解决方案

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Selenium多窗口切换解决方案

在做web端自动化测试用例编写过程中,大家有没有遇到窗口切换的情况,比如如下截图所示的商品列表页,点击任何一款产品后切换到这块产品详情页的情况。

在这里插入图片描述

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

图片

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

图片

这两种窗口切换的情况下大家的自动化测试脚本是如何编写的呢?

还是不需要单独处理窗口切换?如果是使用selenium框架编写涉及窗口切换的自动化测试用例,肯定要单独处理窗口切换的情况。

那么为什么要对出现新窗口的情况单独处理呢?因为我们通过浏览器驱动对象访问指定url对应的是一个窗口X,当在窗口X执行某个操作(例如点击)导致新开一个页面或者新窗口Y,这种情况下selenium没有做智能处理,而把主动权交给了脚本编写人员来决定浏览器驱动对象在X还是Y窗口上模拟用户的操作行为。

那么接下来我们就需要去实现如何让窗口切换到我们预期的窗口,还是拿我们文章开头的例子来说吧,我需要从商品列表页切换到商品详情页,大体有4种解决方案,分别是:遍历找到预期窗口再进行切换、遍历过程中先切换窗口再判断预期窗口、指定窗口切换、多个条件判断预期窗口。接下来就需要解决我如何找到执行某个操作前后的窗口唯一标识,就像人和人之间的区别是身份证,出现商品列表页、商品详情页的情况下这两个窗口如何区分呢?

通过句柄,每个窗口都拥有一个唯一标识句柄,如果感兴趣的读者可以将句柄打印出来看看,其实就是一串作为唯一标识的字符串。

那么selenium框架web自动化情况下,我们如何来获取句柄呢?通过getWindowHandle()方法来获取当前页面的句柄。接下来我们尝试通过第一种解决方案遍历找到预期窗口再进行切换来获取,具体的代码实现逻辑为在执行点击某款产品前获取窗口句柄,然后定位某款产品元素并调用点击方法,然后调用getWindowHandles()方法获取当前所有打开窗口的句柄集合,也就是商品列表页以及商品详情页的句柄集合,接下来要做的就是遍历句柄集合中的元素,遍历的过程中判断当前这个句柄是否和点击操作前的句柄相同,如果不相同则切换到这个句柄对应的窗口,那么读者可能会问,切换窗口的方法是哪个?是switchTo()。下面给读者们提供一份样例代码块。

图片

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

图片

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

图片

以上代码块中实现的停止切换窗口的条件是,当前切换到的窗口title属性值是否是我预期窗口的title属性值,如果是则停止继续切换窗口。看到这里有读者可能会问了,如果有多个窗口的title属性值都相同,这个方案就不管用了吧?是的,但是我们可以尝试替换判断条件,例如判断当前切换到的窗口url和预期的url是否一致,这个判断比较保险,不同的窗口对应的url一般是不同的,但是如果前端代码版本更新时修改了url,此时我们的测试用例该部分信息也需要跟着修改,不要郁闷还有其他的替代解决方案,判断条件可以有一个变成多个,以上是针对多窗口切换情况的常用解决方案以及应用场景,希望能帮到我们的读者朋友。更多相关Selenium多窗口切换内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Selenium多窗口切换解决方案

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python网络爬虫selenium打开多窗口与切换页面的方法

这篇“python网络爬虫selenium打开多窗口与切换页面的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“pytho
2023-06-29

Win10系统切换窗口不置顶的解决方法

这篇文章将为大家详细讲解有关Win10系统切换窗口不置顶的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Win10系统如何解决切换窗口不置顶1、首先下载并安装“Deskpins汉化版”2、安装完成
2023-06-10

Win10系统切换窗口卡顿怎么解决

这篇文章主要讲解了“Win10系统切换窗口卡顿怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Win10系统切换窗口卡顿怎么解决”吧!win10系统解决无法切换输入法的方法1、点击“开
2023-07-01

Win10系统怎么解决切换窗口不置顶

今天小编给大家分享一下Win10系统怎么解决切换窗口不置顶的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。win10系统解决切
2023-07-01

android 浏览器之多窗口方案详解

我们Android平台是一个又一个的Activity组成的,每一个Activity有一个或者多个View构成。所以说,当我们想显示一个界面的时候,我们首先想到的是建立一个Activity,然后所有的操作在Activity里面实现,或者是一个
2022-06-06

Win8系统更新补丁后无法切换窗口怎么办?Win8系统更新补丁后无法切换窗口的解决方法

故障分析:更新win8.1补丁后所致,只要将微软KB3033889补丁进行卸载即可。Win8系统更新补丁后无法切换窗口的解决方法:1、在win8.1操作系统中使用组合键“Win+X”来打开开始菜单,并选择&ldquo
2022-06-04

win8.1怎么解决切换窗口出现卡顿的问题?

win8.1切换窗口出现卡顿解决办法,现在win8.1由于软件更新补丁,有一些漏洞出现,有些电话在切换窗口界面的时候,会出现卡顿的情况,怎么样解决这个办法呢。看看下面的方法吧。 1、在电脑上面,点击进入设置这里。2、在电脑设置这里,选择控制
2022-06-04

Win10切换屏幕卡死的解决方案

在玩游戏时家在win10系统中玩家最近在win10系统中遇到的问题,那么如何解决这个问题呢?让我们来看看小边的解决方案,有需要的朋友来看看win10切换屏幕卡住的解决方案。1.先按下快捷键win+tab+tab。2.然后点击新桌面进入新桌面
2023-07-13

win10输入法无法切换的解决方案

在使用win10系统时,我们几乎都会遇到一些小问题。朋友向我咨询如何解决他的Win10输入法切换问题,然而我并不是小编。小编整理了一些信息。今天,我将与大家分享win10输入法的切换方法。不要说太多。让我们看看。win10输入法切换不了解决
2023-07-12

Nacos解决laravel多环境下配置切换的案例

这篇文章主要介绍了Nacos解决laravel多环境下配置切换的案例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言对于应用程序运行的环境来说,不同的环境有不同的配置通常是
2023-06-06

android横竖屏切换不重启activity解决方案

部分网友会发现Activity在切换到后台或布局从横屏LANDSCAPE切换到PORTRAIT,会重新切换Activity会触发一次onCreate方法,我们可以在androidmanifest.xml中的activit元素加入这个属性An
2022-06-06

Windows 8中输入法的切换只针对单独的窗口怎么解决?

我用的是Win8系统,现在输入法的切换只针对单独的窗口,请问在Windows 8中输入法的切换只针对单独的窗口怎么办?我们在使用 Windows 8 输入法的时候,在不同的窗口切换时,经常会遇到切换过去的窗口输入法和当前设置的不同。 这时
2022-06-04

Linux系统高效切换目录的解决方案是怎样的

小编今天带大家了解Linux系统高效切换目录的解决方案是怎样的,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Linux系统高效切换目
2023-06-28

MYSQL主库切换binlog模式后主从同步错误的解决方案

目录错误原因分析解决方案1. 确保主从库数据一致2. 切换binlog模式3. 重建从库4. 跳过异常错误总结在使用FlinkSQL的mysql-cdc连接器来监听MySQL数据库时,通常需要将MySQL的binlog模式设置为ROW模式。
MYSQL主库切换binlog模式后主从同步错误的解决方案
2024-08-09

解决win7不能在同一窗口打开多个文件夹的方法

最近很多同事的win7系统都出现了不能在同一个窗口打开文件夹,而且有的同事甚至连IE都无法打开了。后来查资料终于解决了,现在和大家分享下方法。方法一:1、打开“计算机”,找到菜单栏的“工具”,
2023-06-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录