窗口切换

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. 如何把百度地图左边的搜索列表导出成excel里?

    有很多人问我,怎么样能够快速的把BAIDU地图左边的搜索列表里的商家地图,电话,导出到EXCEL里. 我就开发了一个小软件,专门为快速的实现导出数据到EXCEL. 为了使用方便,已经将全国的所又省份, ...

  2. 卡片式UI设计详细指南,先收好这8条!

    今天为大家分享的是「卡片设计」. 卡片是产品中常见的设计组件之一.通过卡片,可以将不同的内容分层次组合在一起.卡片式设计自带简约和易用的属性,能让页面看起来更有秩序感. 卡片作为常用的UI组件,通常由 ...

  3. List list = new ArrayList()为何父类引用指向子类对象(多态)

    转自--https://blog.csdn.net/Jae_Peng/article/details/80151033 不习惯用csdn,博客园没有搜到类似的,摘录过来. 多态:要有继承,方法的重写, ...

  4. python--线性回归

    首先先安装要用到的包:sklearn,顾名思义机器学习包 import matplotlib.pyplot as plt import numpy as np import pandas as pd ...

  5. 尝试在Ubuntu中安装Emacs遇到的问题

    出现具体问题 今日学习安装emacs在Ubuntu19.04当中 安装详见下方帖子: 链接: 如何在Ubuntu中安装Emacs. 安装遇到问题,即 sudo add-apt-repository p ...

  6. pyhon&QT编译

    1.编译qrcpyrcc5 -o ico_rc.py ./ico/ico.qrc.qrc文件格式<RCC> <qresource prefix="/"> & ...

  7. Java构造器详解

    java 构造器详解 一个构造器即使什么都不写 ,他也会默认存在一个构造器. 构造器的作用; ①:使用new关键字.本质是在调用构造器 ②:用来初始化值 定义了一个有参构造之后,如果想使用无参构造,显 ...

  8. VS(Visual Studio)如何修改注释的快捷键(换成Ctrl+/)

    原文:https://blog.csdn.net/qq_51485453/article/details/123214455 1.点击"工具">"选项" ...

  9. eggjs中egg-mysql不支持mysql集群,代码修改为支持集群

    说明:暂不支持egg-mysql动态数据源,用到动态数据源请自行修改.欢迎各位大佬指导... 集群配置: exports.mysql = { // 单数据库信息配置 client: { db1: { ...

  10. 【PTA】1049 Counting Ones

    The task is simple: given any positive integer N, you are supposed to count the total number of 1's ...