Selenium实战技巧-多页面和Windows控件处理

news2024/11/15 1:51:32
01 多页面处理

做UI自动化的时候常常会遇到浏览器弹出新的Tab页,或者需要在多个网页服务之间来回取数据的情况。

比如在首页点击文章“Jmeter使用?”的链接,浏览器会弹出一个新的页面显示“Jmeter使用?”这篇文章的详情。此时如果用Selenium Webdriver去查找该页面中的元素,会发现抛出空指针报错。

这是因为Selenium Webdriver只能指向一个HTML页面,而此时Webdriver仍然指向首页,只能查找到首页的内容。

图片

遇到这种情况我们需要用到句柄来处理不同页面的切换。

在使用句柄以前,我们先了解它的基本概念,我们可以把通过Selenium WebDriver打开的每一个页面都看做一个小球,每个小球有唯一的标识(这个标识就是句柄)。我们的手就相当于WebDriver,它通过获取所有的小球,依次遍历查看小球的详情(比如Title)来判断小球是不是我们要的页面。如果是,则通过小球的唯一标识(句柄),把WebDriver指向到我们需要的网页页面,然后再进行元素处理。

图片

Selenium WebDriver 句柄处理Api:

• driver.getwindowhandles() 获取当前浏览器打开的所有页面

• driver.getwindowhandle() 获取当前“活跃”页面

• driver.getTitle() 获取当前“活跃”页面的标题

• driver.switchTo().windows(handleName) 切换“活跃”页面

通过上述Api,我们可以实现多页面的切换和处理:

图片

02 Windows控件

UI自动化中常常遇到上传文件的场景,以百度图片上传为例,上传是基于Windows的控件完成的(点击上传以后,会弹出Windows文件系统,让你选择Windows路径下的文件)

图片

图片

Selenium只能处理网页元素,无法处理Windows控件,遇到这种情况我们可以基于JavaRobot来处理Windows的控件。JavaRobot类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件,可以实现Windows的自动化测试。

03 JavaRobot常用API

图片

以处理Windows弹窗选择文件为例,当我们点击网页元素,出现Windows弹窗后,可按下述逻辑处理:

• 基于Tookit往剪贴板输入文件路径

• 使用JavaRobot Enter键将光标移动到输入框

• 使用JavaRobot CTRL+C 键拷贝剪贴板中的内容

• 使用JavaRobot CTRL+V 粘贴内容到光标出

• 使用JavaRobot ENTER键 关闭Windows弹窗并上传文件

在这里插入图片描述

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末小卡片领取】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2092392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot教程(二十七) | SpringBoot集成AOP实现异常处理

SpringBoot教程(二十七) | SpringBoot集成AOP实现异常处理 前言第一步:统一接口返回结果1. 统一封装结果包含如下参数2. 创建 枚举HttpStatusEnum(返回结果代码)3. 创建 ResponseResult (返回实体类&#x…

如何使用vcftools提取特定的染色体

起源是由于bam文件没有过滤完全,导致calling出来的vcf文件还有线粒体中的染色体存在,因为在金标准文件中只有1-22号和X染色体,不包含线粒体和Y染色体,因为我使用的金标准文件是来自NA12878,是一位白种人女性。因此&…

VBA代码解决方案第十七讲:如何选择一个工作表,选择多个工作表

《VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程,目前已经是第三版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码…

基于小程序的学习交流论坛的设计与实现(代码+教程)

我们将制作一个具备帖子分类、发帖、搜索、点赞回复、学习小组组建以及用户登录等功能的小程序。下面将详细阐述每个功能的实现方法,并提供一些关键代码片段作为参考。 需求 帖子分类:对用户发布的帖子分类到对应的专区(寻人寻物&#xff0…

算法-最长连续序列

leetcode的题目链接 这道题的思路主要是要求在O(n)的时间复杂度下,所以你暴力解决肯定不行,暴力至少两层for循环,所以要在O(n)的时间复杂度下,你可以使用HashSet来存储数组,对于每个数字&#…

分页查询--条件查询

使用pagehelper插件 我们在pom.xml文件中加入下面的语句&#xff0c;可以使用插件&#xff0c;进行分页查询 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1…

最管用的能屏蔽WIndows10/11系统功能按键的工具--powerToys键盘管理器

最近在开发中碰到需要屏蔽系统按键功能的需求&#xff0c;原本以为是程序里屏蔽按键&#xff0c;结果&#xff0c;原来是需要屏蔽操作系统默认按键功能。 这样的话&#xff0c;就只能往注册表&#xff0c;脚本&#xff0c;全局钩子函数&#xff0c;以及一些第三方的什么工具之…

工业智能物联网关,智慧医疗生态圈的创新驱动

项目背景 智慧化数字医疗正在推动医疗健康领域的转型&#xff0c;预计到2024年&#xff0c;全球数字医疗市场规模将达到3656.7亿美元&#xff0c;中国市场规模将增至4130亿元人民币&#xff0c;随着技术的持续创新和市场需求的不断增长&#xff0c;这一领域的需求和潜力将持续扩…

24最新Stable Diffusion入门指南(看完必会)超全面

前言 今天写这个帖子是带大家了解一款强大的 AI 绘画工具——Stable Diffusion&#xff0c;可以帮你解决很多应用层面的[AI控图]问题。 关于 Stable Diffusion 的内容很多&#xff0c;在本篇教程里&#xff0c;我会先为你介绍 Stable Diffusion 模型的运行原理、发展历程和相…

探索离线AI知识库的技术突破:AntSKPro AI 离线知识库一体机

在当今数字化时代&#xff0c;离线AI解决方案变得越来越重要&#xff0c;特别是在网络连接不稳定或不可用的情况下。最近&#xff0c;我有幸接触到一款名为AntSKPro AI 离线知识库一体机的设备&#xff0c;它展示了在离线环境下如何实现强大的AI支持。下面我将分享一些关于这款…

Ajax_00000

contents Ajax介绍 AJAX(Asynchronous JavaScript And XML)。 XML简介 XML&#xff1a;可扩展标记语言。 XML被设计用来传输和存储数据。 XML和HTML类似&#xff0c;不同的是HTML中都是预定义标签&#xff0c;而XML中没有预定义标签&#xff0c;全都是自定义标签&#xff0…

在损坏的驱动器上安全使用数据恢复软件的最佳方法

大量的存储使用和突然的物理损坏可能会使我们最可靠的硬盘驱动器变成最顽固的电子废料。作为一个因丢失数据而经历过几次恐慌发作的人&#xff0c;我发现使用像奇客数据恢复这样的数据恢复软件可以创造奇迹。该软件一直被证明是有用和有效的&#xff0c;即使在处理严重损坏的驱…

性能工具之 JMeter ajax 简单登录案例实战

文章目录 一、前言二、前置工作三、登陆密码分析四、JMeter脚本开发四、登陆性能分析五、小结 一、前言 想起论语中的 “学而时习之不亦说乎” &#xff0c;也想找个开源项目实战一把&#xff0c;下面用一个开源ERP系统中的登陆做今天的实战。 二、前置工作 开源ERP项目地址…

librttopo-1.1.0源码编译全过程(Visual Studio2017)

一、源码下载 可以自行搜索下载&#xff0c;可以根据本文提供的链接进行便捷下载&#xff1a;点击下载1&#xff0c;点击下载2 二、Windows下编译 下载完源代码后&#xff0c;进行源码解压&#xff0c;进入源码解压目录后&#xff0c;可以看到源码组织结构如下所示&#xff0c;…

柯桥外语培训|提建议该用would you还是you should?这些经典句型要记清!

不同场合&#xff0c;不同的人&#xff0c;提出建议的方式都不一样&#xff01;如何正确提建议呢&#xff1f;来看看下面的经典句型&#xff0c;保证万无一失~ Use the question 使用问题给建议 01 May I suggest 我可以建议……吗&#xff1f; A: I am so frustrated with th…

常见硬件工程师面试题(五)

大家好&#xff0c;我是山羊君Goat。 对于硬件工程师&#xff0c;学习的东西主要和电路硬件相关&#xff0c;所以在硬件工程师的面试中&#xff0c;对于经验是十分看重的&#xff0c;像PCB设计&#xff0c;电路设计原理&#xff0c;模拟电路&#xff0c;数字电路等等相关的知识…

上海大面积断网?原因已查明

8月26日晚&#xff0c;上海电信向记者透露&#xff0c;2024年8月26日17:30许&#xff0c;上海电信城域网设备故障&#xff0c;导致上海电信部分宽带业务发生异常&#xff0c;影响全市范围部分云宽带用户业务&#xff0c;上海电信其他业务均不受影响。 经过上海电信全力抢修&…

Java面试自我介绍

持续更新中 模块序号目录链接前言介绍1前言地址2介绍地址基础知识3计算机网络地址4操作系统地址5Java基础地址6Java并发地址7Java虚拟机地址中间件8Mysql地址9Redis地址10Elasticsearch地址11RabbitMQ地址12RocketMQ地址框架13分布式系统地址14MyBatis地址15Dubbo地址16Spring地…

2025舜宇集团校招二维码

舜宇光学集团校招 【2025内推码】 DSwNQ9yu DSJXN8Mr 舜宇光学科技2025校招内推&#xff01;冲冲冲&#xff01; 光学龙头-舜宇集团2025届全球校园招聘正式启动&#xff01;&#xff01;&#xff01; 提供住宿&#xff08;硕士单人间&#xff0c;独立卫浴&#xff01;&#x…

【算法每日一练及解题思路】判断字符串是否包含数字

【每日一练及解题思路】四种方式判断字符串是否含数字 一、题目&#xff1a;给定一个字符串&#xff0c;找出其中不含重复字符的最长子串的长度 二、举例&#xff1a; 比如"abcdefgh",不含数字&#xff1b;比如"1",含数字&#xff1b;比如"a1s&quo…