Selenium —— 网页frame与多窗口处理!

一、多窗口处理.

1.1、多窗口简介

点击某些链接,会重新打开⼀个窗⼜,对于这种情况,想在新页⾯上操作,就
得先切换窗⼜了。
获取窗⼜的唯⼀标识⽤句柄表⽰,所以只需要切换句柄,就可以在多个页⾯灵
活操作了

1.2、多窗口处理流程

  • 先获取当前窗口的句柄driver.current_window_handle
  • 再获取所有的窗口句柄driver.windows_handles
  • 然后判断当前窗口是否为需要操作的窗口,如果不是则,切换到下一个窗口,如果是,则在当前窗口进行操作
def test_switch_window(self):"""窗口切换操作"""# 1、打开百度self.driver.get("https://www.baidu.com")print(self.driver.title, self.driver.current_window_handle)# 2、打开搜狗self.driver.switch_to.new_window()self.driver.get("https://www.sougou.com")print(self.driver.title, self.driver.current_window_handle)# 3、打开hao360self.driver.switch_to.new_window()self.driver.get("https://hao.360.com/")print(self.driver.title, self.driver.current_window_handle)# 4、打开测试人self.driver.switch_to.new_window()self.driver.get("https://ceshiren.com")print(self.driver.title, self.driver.current_window_handle)handles = self.driver.window_handlesprint(handles)self.driver.switch_to.window(handles[0])self.driver.switch_to.window(handles[-1])print(self.driver.title)

二、多网页frame处理

2.1、frame简介

在web自动化中,如果一个元素始终无法定位,那么很有可能是frame中
  • 什么是frame呢?
frame是html的框架,所谓框架就是可以在同一个页面显示不止一个区域,基于html框架,又可以分为垂直框架和水平框架(cols,rows)
  • frame分类
    • frame标签分为frameset,ifame、frame三种
    • frameset和普通的标签一样,不会影响正常的元素定位,可以使用index、id、name、webelement等方式定位到frame
    • frame、iframe相当于selenium而言,则需要进行一些特殊的操作后,才能到定位到元素

2.2、多frame切换

  • frame存在两种
    • 一种嵌套的
    • 一种未嵌套的
  • 切换frame
    • driver.swich_to.frame():根据元素id、index切换frame
    • driver.switch_to.default_content():切换到默认的frame
    • deiver.switch_to.parent_frame():切换到父级frame

未嵌套的frame

  • driver.switch_to.frame(‘frame的id’):有id时优先使用id
  • driver.switch_to.frame(‘frame-index’):没有id的时间根据索引来处理,索引从0开始

嵌套的frame

  • 对于嵌套的frame,则先进入到frame的父节点,再进到子节点,然后可以就可以子节点中的元素对象进行操作了
  • driver.switch_to.frame(“父节点”)
  • driver.switch_to.frame(“子节点”)
def test_switch_frame(self):# ❖ 打开包含frame的web页⾯ https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable# ❖ 打印’请拖拽我’元素的⽂本# ❖ 打印’点击运⾏’元素的⽂self.driver.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")self.driver.switch_to.frame("iframeResult")ele01 = self.driver.find_element(By.ID, "draggable")print(ele01.text)ele02 = self.driver.find_element(By.ID, "droppable")print(ele02.text)self.action.drag_and_drop(ele01, ele02).perform()time.sleep(3)self.driver.switch_to.alert.accept()# self.driver.switch_to.default()# self.driver.switch_to.parent_frame()

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

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

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

相关文章

深耕能源+政务 | 云畅科技入选中国信通院2023低代码无代码产业图谱

由中国信息通信研究院(以下简称“中国信通院”)、中国通信标准化协会联合主办的2023数字化转型发展大会暨首届数字原生大会于9月13-14日在北京举办,“2023低代码无代码产业图谱”正式发布! 01 2023年,中共中央、国务院…

北斗卫星导航系统:引领现代林业发展的先锋

北斗卫星导航系统:引领现代林业发展的先锋 随着人类社会的发展,林业作为生态环境保护和经济发展的重要组成部分,也在不断向前发展。为了更好地管理和保护森林资源,我们必须寻求一种新的方式来提高林业管理的效率。而北斗技术的应用…

SpringBoot的excel模板导出

Word的模板导出(参考:https://easyexcel.opensource.alibaba.com/docs/current/quickstart/fill) 创建有两个sheet的excel文件模板 将模板文件放入resource\templates/doc下使用 public void exportUavInfoExcel(HttpServletResponse response, CaseExportRPO cas…

如何去开展软件测试工作

1. 软件测试 在一般的项目中,一开始均为手动测试,由于自动化测试前期投入较大,一般要软件项目达到一定的规模,更新频次和质量均有一定要求时才会上自动化测试或软件测试。 1.1. 项目中每个成员的测试职责 软件测试从来不是某一…

Kubernetes(K8s):未来云原生应用的引擎

文章目录 Kubernetes的核心概念和架构为什么K8s是构建云原生应用的首选工具?云原生应用的好处和挑战容器编排的重要性:Docker和KubernetesKubernetes生态系统:核心组件和附加工具实际应用:企业如何在生产环境中使用K8s未来展望&am…

Android 遍历界面所有的View

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、实践四、 推荐阅读 一、导读 我们…

结构型设计模式——组合模式

摘要 组合模式(composite pattern): 允许你将对象组合成树形结构来表现"整体/部分"层次结构. 组合能让客户以一致的方式处理个别对象以及对象组合。 一、组合模式的意图 将对象组合成树形结构来表示“整体/部分”层次关系,允许用户以相同的方式处理单独…

AVL Cruise 2020.1 安装教程

文章目录 安装包安装破解 安装包 链接:https://pan.baidu.com/s/1GxbeDj_SyvKFyPeTsstvTQ?pwd6666 提取码:6666 安装 安装文件: 双击setup.exe: 一直netx,中间要修改两次路径,第一次是安装位置&#xf…

Flume最简单使用

文章目录 一、简介1、定义2、基础架构 二、快速入门1、解压Flume2、案例一:监控端口号3、案例二:将空目录下文件 三、Flume进阶1、Flume事务2、Flume Agent内部原理3、案例一:监控日志4、案例二:多路复用和拦截器适应4.1 原理4.2 …

Linux部署elk日志监控系统

目录 一、简介 二、部署elasticsearch 2.1 安装jdk11(jdk版本>11) 2.2 下载安装包 2.3 授权elk用户 2.4 配置elasticsearch.yml 2.5 启动elasticsearch 三、部署logstash 3.1 启动测试 3.2 可能出现的报错 3.3 指定配置文件启动logstash 3.4 安装El…

MySQL数据库管理

一、sql语句: SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。 二、SQL语言分类: DDL:数据定义语言,用于创建数据库对象,如库、表、索引等 DML:数据操纵语言&a…

Win/Mac版Scitools Understand教育版申请

这里写目录标题 前言教育版申请流程教育账号申请 前言 上篇文章为大家介绍了Scitools Understand软件,通过领取的反馈来看有很多朋友都想用这个软件,但是我的网盘里只存了windows的pojie版,没有mac版的,我没有去网上找相关的资源…

js中的类型转换

原文地址 JavaScript 中有两种类型转换:隐式类型转换(强制类型转换)和显式类型转换。类型转换是将一个数据类型的值转换为另一个数据类型的值的过程。 隐式类型转换(强制类型转换): 隐式类型转换是 Java…

Unity下tga和png格式图片打包成AB包大小和加载速度测试

测试素材 测试素材,一张tga格式,一张png格式,他们的图像尺寸一样都是8K图。 两张图在AssetBundles里显示 Tga格式的图明显大很多,我们打包成ab包看看。 在PC 打包后看,明显大小一样,我们进行ab包加载&am…

传统订货方式和网上企业APP订货方式的差别|网站搭建|小程序开发

传统订货方式和网上企业APP订货方式的差别|网站搭建|小程序开发 1、管货品:实时关注热销和滞销商品的库存订货系统:采购单一键生成入库单,便捷的实现从采购到仓库到销售一体化的进销存管理。 传统模式:进销存管理难:…

机器学习,深度学习

一 、Numpy 1.1 安装numpy 2.2 Numpy操作数组 jupyter扩展插件(用于显示目录) 1、pip install jupyter_contrib_nbextensions -i https://pypi.tuna.tsinghua.edu.cn/simple 2、pip install jupyter_nbextensions_configurator -i https://pypi.tuna.t…

RocketMQ —消费者负载均衡

消费者从 Apache RocketMQ 获取消息消费时,通过消费者负载均衡策略,可将主题内的消息分配给指定消费者分组中的多个消费者共同分担,提高消费并发能力和消费者的水平扩展能力。本文介绍 Apache RocketMQ 消费者的负载均衡策略。 背景信息​ …

MacOS上的Pip和Python升级指南

在MacOS系统上,保持Pip和Python版本的最新状态对于顺利进行Python开发至关重要。通过升级Pip和Python,你可以享受到最新的功能、修复的bug以及提升的开发效率。本文将为你提供在MacOS上升级Pip和Python的详细指南,助你打造更强大的开发环境。…

春招秋招,大学生求职容易遇到哪些问题?

每到毕业季就有大批大学生从校园出来,他们怀抱梦想,希望能做出一番成绩。但现实总归是残酷的,有些人找不到工作,有一些人频繁跳槽,也有一些人最终找到的工作与自己的专业没有一点关系,迷茫好几年才找到方向…

20个提升效率的JS简写技巧,告别屎山!

JavaScript 中有很多简写技巧,可以缩短代码长度、减少冗余,并且提高代码的可读性和可维护性。本文将介绍 20 个提升效率的 JS 简写技巧,助你告别屎山,轻松编写优雅的代码! 移除数组假值 可以使用 filter() 结合 Bool…