窗口切换

handles = driver.window_handles ------获取所有窗口句柄,返回的数据是一个列表类型

driver.switch_to.window(handles[-1]) -----切换窗口,因为返回的数据是列表类型,所以可以根据索引进行切换

窗口等待和window窗口切换

----点击打开新窗口的时候,需要又一个等待的过程;避免窗口没有打开就进行接下来的元素查找,程序报错

WebDriverWait(driver, 30).until(EC.new_window_is_opened(before_handles))

-----等待用的还是之前说的现实等待的句式,条件换成new_window_is_opend.

-----这里的locator是before_handles,就是点击打开新窗口之前的所有窗口句柄;理论来说,点击打开一个新窗口后再获取所有窗口句柄,得到的值肯定会比点击之前多,这样才能符合new_window_is_open这个函数。所以before_handles一定是在点击打开新窗口这个操作之前获取的

---获取当前窗口句柄 driver.current_window_handle

ps:等待只是等待,不具备切换功能,即等待新窗口打开后,当前窗口句柄还是之前的,不会是新打开的那个窗口!

iframe切换

  1. iframe切换有3种方式:索引/name/webelement

1.1 通过name切换

driver.switch_to.frame("baidu")

1.2 通过webelement切换

iframe_element = driver.find_element_by_xpath('//iframe[@name="baidu"]')

driver.switch_to.frame(iframe_element)

frame等待,等待后自动完成切换

WebDriverWait(driver, 10).until(

EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[@name="baidu"]')))

  1. 退出iframe,切换回主页面---记住切换回主页面,不然无法定位主页面元素

    driver.switch_to.default_content()

  2. 如果有多个iframe嵌套,如何切换到父级iframe

    driver.switch_to.parent_frame()

  3. 如何判断需要定位的元素是否在iframe里面

    在浏览器查看源码的时候,通过元素定位,然后查看下面元素框,如果有iframe,那么这个元素就是在iframe里面的

定位alert

1 切换到alert,switch_to后面不需要再加括号 driver.switch_to.alert

2. 点击alert的确认按钮 driver.switch_to.alert.accept()

3. 点击alert的取消按钮 driver.switch_to.alert.dismiss()

4. alert等待 WebDriverWait(driver, 10).until(EC.alert_is_present())

点击确认或者取消后,就关闭了弹窗,直接返回的主页面;同一时间内只会弹出一个alert

如何区分是alert还是一个普通元素----通过浏览器定位,可以定位到的就是元素,定位不到的就是alert

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

  1. python selenium + web自动化,切换到新的窗口,元素定位不到?

    问题描述: 自动化由首页切换到分页面,打开了一个新的窗口,不过,定位不到这个窗口的元素,通过开发者工具是可以查到这个元素的 原因是: 因为窗口句柄还停留在上一个页面,所以导致无法定位元素.报错 &qu ...

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

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

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

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

  4. 【Selenium04篇】python+selenium实现Web自动化:文件上传,Cookie操作,调用 JavaScript,窗口截图

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

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

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

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

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

  7. Helium文档12-WebUI自动化-go_to在当前的Web浏览器窗口中打开指定的URL

    前言 go_to在当前的Web浏览器窗口中打开指定的URL 入参介绍 url def go_to(url): """ :param url: URL to open. : ...

  8. web自动化之windows页面切换

    一.为什么切换windows页面 在页面操作过程中,存在点击某个元素之后会重新打开一个windows页面,如果不切换至新页面的话,无法在新页面中进行操作,程序会出现报错 二.如何切换 1.获取当前所有 ...

  9. python ui自动化之多窗口切换

    wd.current_window_handle #获取当前窗口句柄 wd.window_handles #获取所有窗口句柄 wd.switch_to.window(wd.window_handles ...

  10. Selenium Web 自动化 - 项目实战(三)

    Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解  3.1 解析新增页面目录  3.2 解析新增测试用例目录  3. ...

随机推荐

  1. SVN安装配置手册

    1.官网下载相关的服务端的安装包 SVN(版本控制器): SVN-客户端:TortoiseSVN SVN-服务端:VisualSVN 下载地址: TortoiseSVN:https://tortois ...

  2. VAE变分自编码器公式推导

    VAE变分推导依赖数学公式 (1)贝叶斯公式:\(p(z|x) = \frac{p(x|z)p(z)}{p(x)}\) (2)边缘概率公式:\(p(x) =\int{p(x,z)}dz\) (3)KL ...

  3. gRPC中protobuff type和C# type原生标量对应表

    查看Microsoft官方文档: Create Protobuf messages for .NET apps | Microsoft Docs

  4. 暑假学习6 hdfs shell命令

    命令行操作:cli Hadoop的命令shell : Hadoop fs -ls file:                   操作 本地的文件系统 hadoop fs -ls hdfs://nod ...

  5. Mac电脑设置环境变量

    转载自:https://jingyan.baidu.com/article/8065f87f47b29523312498e4.html 1.使用快捷键Command+R(或者Windows键+R),或 ...

  6. LeetCode 删除数组中重复项 26 80

    26(80) 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素只出现一次(使得出现次数超过两次的元素只出现两次 ) ,返回删除后数组的新长度.元素的 相对顺序 应该保 ...

  7. html页面下载为docx文档

    1.安装要用到的两个插件:html-docx-js-typescript.file-saver. 2.导入两个方法: import { asBlob } from 'html-docx-js-type ...

  8. vscode的下载,安装以及中文配置

    VScode是开发Go应用的基础编辑器,是Microsoft(微软的产品),可以运行在Windows.Linux.Mac Os X上使用,默认提供Go语言语法高亮,安装Go语言插件后,就可以智能提示, ...

  9. Monkey 用户指南(译)

    原址:https://developer.android.com/studio/test/monkey.html 帮助:google翻译:https://translate.google.cn/ 自己 ...

  10. go两种数据类型的区别、数据类型和操作符、常量、变量声明

    值类型和引用类型 1.值类型:变量直接存储值,内存通常在栈中分配. 基本数据类型int.float.bool.string以及数组和struct. 2.引用类型:变量存储的是一个地址,这个地址存储最终 ...