frame切换

1、html代码:
<frameset cols="25%,50%,25%">
<frame src="a.htm">
<frame src="b.htm">
<frame src="c.htm">
</frameset>

上述是frame框架页面元素
 
看看展示效果:

2、我们无法定位三个页面的元素,怎么办呢?

  说明:在Selenium中封装了如何切换frame框架的方法
  方法:
    1). driver.switch_to.frame(frame_reference) --> 切换到指定frame的方法
               frame_reference:可以为frame框架的name、id或者定位到的frame元素
 
    2). driver.switch_to.default_content() --> 恢复默认页面方法
 
如果想要切换下一个页面,需要回到默认页面在进行操作
 
3、看需求:打开‘注册实例.html’页面,完成以下操作:
 
1). 填写主页面的注册信息
2). 填写注册页面A中的注册信息
3). 填写注册页面B中的注册信息
 
 
doing:
1. 完成主页面注册信息;
2. 调用frame切换方法(switch_to.frame("myframe1"))切换到注册用户A框架中
//想要切换到另一个frame页面,需要回到默认页面
3. 调用恢复默认页面方法(switch_to.default_content())
4. 调用frame切换方法(switch_to.frame("myframe2"))切换到注册用户B框架中
 

多窗口切换

 
说明:在HTML页面中,当点击超链接或者按钮时,有的会在新的窗口打开页面。
 
1、 为什么要切换窗口?
 
如果我们定位元素,操作中打开了一个新的窗口,我们想要到新的窗口中
 
 
2、如何切换窗口?
 
  说明:在Selenium中封装了获取当前窗口句柄、获取所有窗口句柄和切换到指定句柄窗口的方法;
        句柄:英文handle,窗口的唯一识别码
 
  每个浏览器的句柄值也不一样
 
 
        方法:
              1). driver.current_window_handle -->      获取当前窗口句柄
              2). driver.window_handles -->       获取所有窗口句柄
                   3). driver.switch_to.window(handle) -->   切换指定句柄窗口
 
      先获取,在切换
 切换窗口:列表的  -1 索引对应的值,始终是最新窗口的句柄值
 
  driver.switch_to.window(handles[-1])
 
看需求:
打开‘百度首页’页面,完成以下操作
1). 点击‘百度热搜’进入热搜页面
2). 在热搜页面中,停留3s,关闭当前页面
3). 回到百度首页

doing:

1). 点击‘百度热搜’进入热搜页面
driver.find_element(by=By.CSS_SELECTOR, value='[aria-label="百度热搜"]').click()
2). 在热搜页面中,停留3s,关闭当前页面
sleep(3)
# 获取当前所有句柄
handles = driver.window_handles
# 切换到当前页面
driver.switch_to.window(handles[-1])
driver.close()
3). 回到百度首页 
driver.switch_to.window(handles[0])
关闭当前页面后,不会自动回到上一页,如果想要回到上一页操作,需要切换句柄
 
 
 
 
 
 

web自动化09-frame切换、多窗口切换的更多相关文章

  1. Selenium(六):frame切换、窗口切换

    1. 切换到frame index.html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...

  2. python-web自动化-元素操作:windows窗口切换 / alert切换 / iframe切换

    1. windows窗口切换:切换到要操作的窗口 有多个窗口: 1. 触发新窗口的出现 2. 得知道新窗口是谁 -- 依据窗口的window_handle来识别窗口 3. 得到窗口的window_ha ...

  3. Selenium 3----定位一组元素+多表单切换+多窗口切换

    定位一组元素 和定位单个元素类似,WebDriver提供了8种用于定位一组元素的方法.定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数. find_e ...

  4. Python+selenium(多表单、多窗口切换)

    多表单切换 案例:在Frame.html文件种定位搜狗搜索页面,进行搜索操作 Frame.html <html> <head> <title>Frame_test& ...

  5. 【Selenium03篇】python+selenium实现Web自动化:元素三类等待,多窗口切换,警告框处理,下拉框选择

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第三篇博 ...

  6. web自动化 下拉框、切换到新窗口

    一.下拉框 相信大家在手动测试web页面时,遇到过下拉框吧,那进行web自动化测试时,如何操作下拉框,且看下文 1.selenium中提供了方法,先导入Select方法 from selenium.w ...

  7. web自动化--窗口切换

    窗口切换 handles = driver.window_handles ------获取所有窗口句柄,返回的数据是一个列表类型 driver.switch_to.window(handles[-1] ...

  8. web自动化之浏览器的窗口切换

    from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from seleni ...

  9. web自动化 -- 浏览器窗口切换

    切换浏览器窗口 示例: from time import sleep from selenium import webdriver from selenium.webdriver.support.wa ...

  10. python - web自动化测试 - 元素操作 - 窗口切换

    # -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: 元素操作-切换.py @ide: PyCharm Community ...

随机推荐

  1. ROS节点开机自启的方法

    ROS节点开机自启的方法(Ubuntu- melodic) 一. 使用命令 sudo apt install ros-melodic-robot-upstart 安装 robot-upstart工具包 ...

  2. RTC 科普视频丨聊聊空间音频的原理与其背后的声学原理

    在现在很多的线上实时互动场景中,我们重视的不仅仅是互动体验,还要提升沉浸感.而在很多场景中,仅凭空间音频技术,就可以带来如临其境的体验.空间音频技术的原理是怎样的呢? 看过我们新一期的 RTC 科普视 ...

  3. SpringBoot——模板引擎及原理

    更多内容,前往IT-BLOG 一.模板引擎的思想 模板是为了将显示与数据分离,模板技术多种多样,但其本质都是将模板文件和数据通过模板引擎生成最终的 HTML代码. 二.SpringBoot模板引擎 S ...

  4. Spring Data Solr 对 Solr 的增删改查实例

    Spring Data Solr 就是为了方便 solr 的开发研制的一个框架,其底层是对 SolrJ(官方 API)的封装 一.环境搭建 第一步:创建 Maven 项目(springdatasolr ...

  5. 使用 ApplicationContextAware 定义 SpringContextHolder 类

    需求:使用 @autowired注入一些对象,但发现不可以直接使用@Autowired,因为方法是static的,要使用该方法当前对象也必须是static,正常情况下@Autowired无法注入静态的 ...

  6. git初始化流程

    1. 添加 SSH key 一台主机仅需要设置一次 1.1 检查主机是否已经有 SSH key 只需要检查~/.ssh下是否存在 id_rsa.pub 或 id_dsa.pub.若已存在,跳转至步骤3 ...

  7. 别逛了,送你一份2023年Java核心篇JVM(虚拟机)面试题整理

    Java内存区域 说一下 JVM 的主要组成部分及其作用? JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载).Execution engine(执行引擎):两个组件为Ru ...

  8. Flutter中如何取消任务

    前言 在开发过程中,取消需求是很常见的,但很容易被忽略.然而,取消需求的好处也很大.例如,在页面中会发送很多请求.如果页面被切走并处于不可见状态,就需要取消未完成的请求任务.如果未及时取消,则可能会导 ...

  9. 在 Vue 中控制表单输入

    Vue中v-model的思路很简单.定义一个可响应式的text(通常是一个ref),然后用v-model="text"将这个值绑定到一个input上.这就创造了一个双向的数据流: ...

  10. 每日复习——static , 饿汉式方法,懒汉式方法,以及单例设计模式

    1.1.static 的使用 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过 new 关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部 ...