【Python测试开发】:切换窗口和表单

一、多窗口切换

浏览器打开的窗口其实会有一个叫做句柄的概念。
句柄就类似于每一个标签页的ID一样,具有唯一性。

1.1 语法

  • 获取当前窗口句柄,注意后面没有括号哦~
driver.current_window_handle
  • 获取所有窗口句柄,结果以列表格式存储,注意后面没有括号哦~
driver.window_handles
  • 根据句柄切换页面
driver.switch_to.window(要切换窗口的句柄)

1.2 案例

  操作步骤:
1、打开百度首页
2、输入框输入“马蓉”
3、点击回车
4、点击“马蓉”百度百科
4、在百度百科页面点击“编辑”
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from time import sleep

# 打开浏览器
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.maximize_window()

# 打开网页
driver.get('https://www.baidu.com/')
# 定位搜索框
search_box = driver.find_element(By.ID, 'kw')
search_box.send_keys('马蓉')
search_box.send_keys(Keys.ENTER)

# 点击马蓉百度百科标题,进入详情页面(打开了一个新窗口)
driver.find_element(By.XPATH, '//div[@id="content_left"]/div//h3/a').click()

# 获取所有窗口句柄,结果保存在列表里
handle_list = driver.window_handles
# 打印出来看看结果
print(handle_list)
# 根据每个窗口的句柄唯一,来进行窗口切换
driver.switch_to.window(handle_list[-1])

# 在新窗口点击“编辑”链接
driver.find_element(By.LINK_TEXT, '编辑').click()
# 关闭浏览器

二、表单切换

2.1 背景

在同一个页面上,也可能存在元素不在同一个iframe标签里面的情况,因此要实现对元素的定位,需要先切换到元素所在的ifame标签,再根据八种元素定位方式进行元素定位。
在这里插入图片描述

2.2 语法

  • 切换到最外层iframe
driver.switch_to.default_content()
  • 切换到任意iframe
1、定位到iframe标签
2、driver.switch_to.frame()

switch_to.frame()中可以写iframe标签的id和name属性的值,但是id和name属性的值要唯一
switch_to.frame()中可以写通过其他元素定位方式定位的iframe标签对象,比如以下案例就是使用这种方式。

2.3 案例

  操作步骤:

1、打开163邮箱登录页面
2、定位账号和密码输入框,并输入账号和密码
3、点击 登录 按钮
4、点击页面上的“VIP”
  • 如下图,可以知道账号和密码元素都有"ID"属性,但是,刷新页面可以知道ID属性为动态变化的,因此不可用于元素定位
  • 根据经验:ID属性值长长一串类似乱码的格式,都是不可以用于元素定位的,因此保险起见,都是采用其他元素定位方式
    在这里插入图片描述
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

# 打开浏览器
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(3)

# 打开网页
driver.get('https://mail.163.com/')

# 切换表单
# 定位表单元素
iframe_element = driver.find_element(By.XPATH, '//div[@id="loginDiv"]/iframe')
# 切换
driver.switch_to.frame(iframe_element)

# 账号输入框
driver.find_element(By.NAME, 'email').send_keys('abc')
# 密码输入框
driver.find_element(By.NAME, 'password').send_keys('1122333')
# 点击 登录 按钮
driver.find_element(By.ID, 'dologin').click()

# 切换到最外层ifame
driver.switch_to.default_content()

# 点击最外层表单的VIP字段
driver.find_element(By.CSS_SELECTOR, 'a[href="https://vipmail.163.com/?from=fmail"]').click()
sleep(3)
# 关闭浏览器
driver.quit()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Simulia 2022 新功能

增材制造 达索系统增材制造解决方案实现了端到端一体化全流程解决方案,可以实现从原材料研究到创成式设计、工艺设计、工艺仿真仿真、并且还延续到增材制造完成后的热处理、线切割等工艺,涵盖了各个方面的内容。 达索系统针对增材制造各个环节在每一个…

一整个分析模型库,大数据分析工具都这么玩了吗?

一整个分析模型库,100张BI报表,覆盖销售、财务、采购、库存等多个分析主题。只需对接ERP,就能自动生成BI报表,完成对海量数据的系统化分析。现在大数据分析工具都发展到这种程度了吗? 放眼看去,现阶段能做…

在线客服系统源码 聊天记录实时保存 附带完整的搭建教程

在线客服系统是一个企业网站进行网络营销的最重要的工具。企业进行网络宣传后,会有很多访客进入到网站,这时候网站就需要有在线客服人员进行接待,及时的与访客进行沟通,才能留住访客,变流量为销量。 在线客服系统可以…

销售团队可以借助CRM系统做什么?

销售主管都想有一支效率高、质量高的销售团队,无论对于初创企业还是大型企业销售团队都是企业盈利的主力部门,直接为企业带了业绩。如何提升销售团队水平?离不开CRM系统的辅助,CRM软件能为销售团队提供哪些支持?下面我…

队列OJ--循环队列

目录 题目链接:622. 设计循环队列 - 力扣(LeetCode)​​​​​ 题解: ​编辑 代码实现: 完整代码: 题目链接:622. 设计循环队列 - 力扣(LeetCode)​​​​​ 题解&#x…

高质量简历写作求职通关-前言

(点击即可收听) 在如今大内卷的环境下 无论哪个行业,都竞争激烈 2023年的毕业生人数已达到1158万人,本科毕业人数约700万人,研究生毕业人数约119万人 其中,北京市的就有28.5万名高校毕业生中,硕博毕业生人数首次超过本科生... 可见学历的通胀…

各类Linux操作系统如何选择?

各类Linux操作系统如何选择? 企业级应用:RHEL/CentOS 桌面平台:Ubuntu 开源服务器:CentOS 1.1 RedHart 1.1.1RHEL RHEL是指Red Hat Enterprise Linux,是由Red Hat公司开发和维护的一款商业Linux操作系统。它是基于…

【Unity细节】如何调节标签图标的大小(select icon)—标签图标太大遮住了物体

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 😶‍🌫️收录于专栏:unity细节和bug 😶‍🌫️优质专栏 ⭐【…

teambition迁移云效

由于TB(行云)停止运营了,可惜了,非常好用的一个工具,项目管理,代码管理,自动化构建等,都支持。现需要切换到云效(https://codeup.aliyun.com/)。这个工作量确实挺大的,像我有N个公司*N个项目的&…

企业要满足什么条件才能实施CRM系统?

CRM的作用相信大家也所有了解,但并不是所有的企业都适合实施CRM。或者说,大部分企业实施CRM并不会100%的成功。那么,企业实施CRM的条件是什么?下面我们就来说一说。 1、业务规模 如果您的客户数量较少,没有复杂的客户…

.skip() 和 .only() 的使用

.skip() 和 .only() 的使用 说明 在做自动化测试中,跳过执行某些测试用例,或只运行某些指定的测试用例,这种情况是很常见的Cypress中也提供了这种功能 如何跳过测试用例 通过describe.skip() 或者 context.skip() 来跳过不需要执行的测试…

微信表情太大怎么缩小?一分钟教会你!

在微信的较早版本中,单个表情的最大体积限制为500KB,而在后续版本中,这一限制已经放宽。目前,微信允许上传的单个表情最大体积为2MB。所以,我们只需要把图片或者GIF缩小到2MB即可,下面就向大家介绍三种实用…

2023最新国内外项目进度管理软件排行榜(推荐)

介绍8款优秀的在线项目管理软件,其中进度猫、Trello、Clarizen、Asana、MeisterTask、ClickUp和Wrike都是以甘特图为核心进行项目管理,而monday则是低代码项目管理软件,提供一站式的工作记录和管理。这些软件都可以帮助项目经理更有效地管理项…

打工人必备!6个超级实用的办公软件,让你高效完成工作

在现代职场中,办公软件已经成为我们工作中不可或缺的利器,能够让我们的工作变得更加高效和便捷。今天就给大家分享6个超级实用的办公软件,让你高效完成工作! 1、滴答清单(待办事项软件) 滴答清单是一款功能…

什么样的企业可以使用免费版的CRM?

市面上大部分的免费CRM不需要付费即可使用,但是对于使用人数和功能进行了部分限制。下面我们就来说说,免费CRM的适用对象是谁? 1、初创/小微企业 这种小微企业没有太多的资金,也没有复杂的客户管理需求,仅仅需要一款…

最新企业服务总线ESB的国内主要厂商和开源厂商排名,方案书价格多少

企业服务总线ESB是什么? ESB平台(企业服务总线,Enterprise Service Bus)是一种企业级集成平台,它提供了一种开放的、基于标准的消息机制,通过简单的标准适配器和接口,来完成粗粒度应用&#xff…

深度学习之生成唐诗案例(Pytorch版)

主要思路: 对于唐诗生成来说,我们定义一个"S" 和 "E"作为开始和结束。 示例的唐诗大概有40000多首, 首先数据预处理,将唐诗加载到内存,生成对应的word2idx、idx2word、以及唐诗按顺序的字序列。…

【HarmonyOS】低代码平台组件拖拽使用技巧之常用基础组件(上)

【关键字】 HarmonyOS、低代码平台、组件拖拽、常用基础组件、基础容器 1、写在前面 之前是花了一些时间介绍了在低代码平台中滚动容器、网格布局、页签容器、列表这几种容器的拖拽技巧及使用方法,今天我会继续来介绍咱们在应用开发中可能会经常用到的一些基础容器…

捷报连连!怿星科技荣获北京市科学技术进步奖一等奖

近期,北京市科学技术委员会、中关村科技园区管理委员会揭晓了2022年北京市科学技术奖的获奖名单。其中,由清华大学牵头、怿星科技参与开发的《电动汽车底盘运动控制与能量管理关键技术及应用》项目荣获“北京市科学技术进步奖一等奖”。 作为北京市政府设…

【开源】基于Vue.js的车险自助理赔系统的设计和实现

项目编号: S 018 ,文末获取源码。 \color{red}{项目编号:S018,文末获取源码。} 项目编号:S018,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 车…