切换浏览器窗口

示例:

from time import sleep
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC url = "https://www.baidu.com"
search_box = '//*[@id="kw"]'
click_search = '//*[@id="su"]' driver = webdriver.Chrome() # 定义 driver
driver.implicitly_wait(10) # 设置隐式等待,作用域是全局 try:
driver.get(url)
driver.find_element_by_xpath(search_box).send_keys('有道云') # 输入搜索关键字
driver.find_element_by_xpath(click_search).click() # 搜索 # 窗口切换
# setup1:获取所有窗口的句柄
window_handle_list = driver.window_handles
print('最开始的句柄列表:', window_handle_list) # 当前所在的窗口句柄
now_window = driver.current_window_handle # 打开新窗口
driver.find_element_by_xpath('//*[text()="官方"]').click()
sleep(0.5) # 打开新窗口就得 sleep() 一下 # setup2:等待新窗口打开
WebDriverWait(driver, 5).until(EC.new_window_is_opened(window_handle_list)) # setup3:获取新窗口打开后的 所有窗口的句柄
opened_window_handle_list = driver.window_handles
print('打开新窗口的句柄列表:', opened_window_handle_list) # setup4:让句柄进入新窗口
driver.switch_to.window(opened_window_handle_list[-1]) # 列表的 -1下标 就是最后一个,最后一个自然是最新打开的窗口 # # 在新窗口内的其他操作
driver.find_element_by_xpath('//*[@id="form-realname"]').send_keys(13290021660)
sleep(1) # setup5:切换回其他窗口
driver.switch_to.window(opened_window_handle_list[0]) # 列表的 0下标 就是最前一个窗口 sleep(1)
driver.quit()
except Exception as e:
driver.quit()
raise e

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

  1. web自动化浏览器chrome和驱动chromedriver

    1.web自动化下载浏览器和对应的浏览器驱动,以谷歌浏览器为例 电脑上安装谷歌浏览器,查看谷歌浏览器的版本,输入chrome://settings/help 2.chromedriver国内镜像地址h ...

  2. selenium常用的API(六)浏览器窗口切换

    当使用selenium webdriver进行自动化测试打开多个窗口的时候,可能需要在不同的窗口间进行切换,webdriver提供的获取浏览器窗口句柄.切换句柄的方法如下: 获取当前窗口句柄 driv ...

  3. selenium操作浏览器-窗口切换

    package seleniumLearn1; import java.util.Set; import java.util.concurrent.TimeUnit; import org.openq ...

  4. Web自动化之iframe切换

    一.如何判断元素是否在iframe中 选中要操作的元素,通过下方的父节点查看是否存在iframe,存在则元素在iframe,需要切换至iframe中进行元素的操作 二.iframe切换方式一 1.方式 ...

  5. Web自动化-浏览器驱动chromedriver安装方法

    1.python中安装好selenium包  pip install selenium 2.根据以下驱动对照表下载Chrome对驱动   chromedriver版本 支持的Chrome版本 v2.3 ...

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

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

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

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

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

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

  9. 【Selenium01篇】python+selenium实现Web自动化:搭建环境,Selenium原理,定位元素以及浏览器常规操作!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 二.话不多说,直接开干,开始搭建自动化测试环境 这里以前在 ...

随机推荐

  1. IOT设备SmartConfig实现

    一般情况下,IOT设备(针对wifi设备)在智能化过程中需要连接到家庭路由.但在此之前,需要将wifi信息(通常是ssid和password,即名字和密码)发给设备,这一步骤被称为配网.移动设备如An ...

  2. Mariadb之显式使用表锁和行级锁

    首先我们来看看mariadb的锁定概念,所谓锁就是当一个进程或事务在操作某一资源时,为了防止其他用户或者进程或事务对其进行资源操作,导致资源抢占而发生冲突,通常在A进程操作该资源时,会对该资源进行加锁 ...

  3. SpringBoot--防止重复提交(锁机制---本地锁、分布式锁)

    防止重复提交,主要是使用锁的形式来处理,如果是单机部署,可以使用本地缓存锁(Guava)即可,如果是分布式部署,则需要使用分布式锁(可以使用zk分布式锁或者redis分布式锁),本文的分布式锁以red ...

  4. DOM-BOM-EVENT(3)

    3.Node常用属性 childNodes 获取所有子节点 <div id="wrap"> <div>1111</div> <div> ...

  5. 【Xamarin.Forms 1】App的创建与运行

    引言 本篇文章将从介绍Xamarin.Forms创建开始. 开发环境 Visual Studio 2019 16.6.2 Xamarin.Forms 4.6.0.726 Android 5.0 (AP ...

  6. 吐血推荐,想进BAT必看

    不必太纠结于当下,也不必太忧虑未来,人生没有无用的经历,当你经历过一些事情后,眼前的风景已经和从前不一样了.--村上春树 一.包含如下内容 ActiveMQ消息中间件面试专题 BAT80道面试题 BA ...

  7. JavaScript基础关于JSON(011)

    JSON意即JavaScript Object Notation,是JavaScript里数据表示的通用格式,JSON数据格式很象JavaScript里的对象: {"name": ...

  8. 洛谷 P1025 【数的划分】

    进入正题 思路:递归 这道题有点像放苹果: 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法) 转化一下就有: 把n个苹果放在k个 ...

  9. For setting NODE_ENV you can use any of these methods.

    method 1: set NODE_ENV for all node apps Windows: set NODE_ENV=production Linux or other Unix based ...

  10. linux简单介绍

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统. linux基本思想有两点,1.一切都是文件:2.每个软件有确定 ...