Python3 Selenium多窗口切换

以腾讯网(http://www.qq.com/)为例,打开腾讯网,点击新闻,打开腾讯新闻,点击新闻中第一个新闻链接。

在WebDriver中封装了获取当前窗口句柄方法和获取所有窗口句柄的方法以及切换指定句柄窗口的方法;
(句柄:英文handle,窗口的唯一识别码)
方法:
1). driver.current_window_handle --> 获取当前窗口句柄
2). driver.window_handles --> 获取所有窗口句柄
3). driver.switch_to.window(handle) --> 切换指定句柄窗口


import time
from selenium import webdriver # 创建Chrome浏览器驱动对象
driver = webdriver.Chrome()
# 加载腾讯网页面
driver.get('http://www.qq.com/')
# 窗口最大化
driver.maximize_window() time.sleep(3)
# 切换窗口
"""
1. 获取腾讯首页当前窗口句柄
2. 点击腾讯首页页面中新闻中心链接
3. 获取所有窗口句柄
4. 遍历判断窗口句柄并切换到新闻中心_腾讯网
5. 点击新闻中心_腾讯网页面第一个新闻链接,打开新闻详情页
"""
current_handle = driver.current_window_handle
print('当前窗口句柄为:', current_handle) # 定位-点击腾讯首页页面中新闻中心_腾讯网链接
driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/ul/li[1]/a').click() # 获取所有窗口句柄
handles = driver.window_handles
print('所有窗口句柄为:', handles)
for handle in handles:
print('遍历窗口为:', handle)
if handle != current_handle:
# 切换到新闻中心_腾讯网
driver.switch_to.window(handle)
# 点击新闻中心第一个新闻链接,打开新闻详情页
driver.find_element_by_xpath('//*[@id="subHot"]/h2/a').click() time.sleep(3) # 关闭Chrome浏览器
driver.quit()

 

这是常用的方法,以下是另外一种方法,简单

import time
from selenium import webdriver # 创建Chrome浏览器驱动对象
driver = webdriver.Chrome()
# 加载腾讯网页面
driver.get('http://www.qq.com/')
# 窗口最大化
driver.maximize_window() time.sleep(3)
# 切换窗口
"""
1. 获取腾讯首页当前窗口句柄
2. 点击腾讯首页页面中新闻中心链接
3. 获取所有窗口句柄
4. 遍历判断窗口句柄并切换到新闻中心_腾讯网
5. 点击新闻中心_腾讯网页面第一个新闻链接,打开新闻详情页
"""
current_handle = driver.current_window_handle
print('当前窗口句柄为:', current_handle) # 定位-点击腾讯首页页面中新闻中心_腾讯网链接
driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/ul/li[1]/a').click() # 获取所有窗口句柄
handles = driver.window_handles
print('所有窗口句柄为:', handles)
driver.switch_to.window(handles[-1])
# 点击新闻中心第一个新闻链接,打开新闻详情页
driver.find_element_by_xpath('//*[@id="subHot"]/h2/a').click() time.sleep(3) # 关闭Chrome浏览器
driver.quit()

  

Python3 Selenium多窗口切换的更多相关文章

  1. python3 + selenium 之窗口切换

    窗口切换 此代码来源学习后对淘宝操作实践记录: 以下代码在Chrome61和IE11上正常运行,Firefox5.7上运行存在一些问题须改进,应该是火狐不兼容差link_text部分和循环经常报错,在 ...

  2. Python+Selenium学习--窗口切换及操作元素

    场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的 ...

  3. selenium webdriver窗口切换(上)

    selenium webdriver窗口切换,有时候在做自动化的时候需要打开很多很多的页面, 当在操作不同的页面的时候需要切换窗口,下面是如何切换到前后页面窗口的操作: package test201 ...

  4. selenium webdriver窗口切换(下)

    多窗口切换有时候需要在不同的窗口切换,从而操作不同的窗口上的元素.在selenium1.0 中这个问题比较难处理.但WebDriver 提供了switcTo.window()方法可以切换到任意的窗口. ...

  5. Selenium 多窗口切换

    我们在操作网页的时候,点击有些页面的链接,会重新打开一个窗口,我们要在新页面上操作,就得切换窗口 比如在百度首页的登录框点击注册,会重新打开一个注册的新页面,要在新页面注册,就得先切进新页面 那我们怎 ...

  6. Selenium多窗口切换代码

    # #!/usr/bin/python3 # -*- coding: utf-8 -*- # @Time : 2020/7/31 16:05 # @Author : Gengwu # @FileNam ...

  7. python之selenium多窗口切换

    前提: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这就需要主机切换到新打开的窗口上.WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换. 内容: 以 ...

  8. selenium多窗口切换定位

    from selenium import webdriverimport unittest,time,refrom selenium.webdriver.common.keys import Keys ...

  9. selenium 多窗口切换(windows)

    在web应用中,常常会遇见点击某个链接会弹出一个新的窗口,或者是相互关联的web应用 ,这样要去操作新窗口中的元素,这时就需要主机切换到新窗口进行操作..WebDriver 提供了switchTo() ...

随机推荐

  1. 一致性Hash算法(分布式算法)

    一致性哈希算法是分布式系统中常用的算法,为什么要用这个算法? 比如:一个分布式存储系统,要将数据存储到具体的节点(服务器)上, 在服务器数量不发生改变的情况下,如果采用普通的hash再对服务器总数量取 ...

  2. Java——this关键字

    前言 this关键字属于Java中比较复杂的关键字之一,若是学习过C++或者其他的一些面向对象语言也会遇到this这个关键字并且都会看到this的含义就是表示当前对象.什么叫做表示当前对象?this在 ...

  3. Eureka 2.0 开源流产,真的对你影响很大吗?

    本文首发于 http://blog.didispace.com/Eureka-2-0-discontinued/ 最近连续发烧四天,偶尔刷两下朋友圈都能看到好几条来自不同号的关于<Eureka ...

  4. SpringBoot系列——aop 面向切面

    前言 项目中我们经常会用到aop切面,比如日志记录:这里简单记录一下springboot是如何使用aop spring对aop的配置,来自springboot参考手册,Common applicati ...

  5. 【转载】 Sqlserver查看数据库死锁的SQL语句

    在Sqlsever数据库中,有时候操作数据库过程中会进行锁表操作,在锁表操作的过程中,有时候会出现死锁的情况出现,这时候可以使用SQL语句来查询数据库死锁情况,主要通过系统数据库Master数据库来查 ...

  6. CSS的简单复习总结

    如果说网页是人的话那么CSS就是化妆品了哈哈哈,所以网页离不开CSS的装饰.id选择器和Class选择器    二者都是用来选择元素进行装饰的,我个人理解是类选择器包含了id选择器,class选择器不 ...

  7. 【Java每日一题】20170119

    20170118问题解析请点击今日问题下方的“[Java每日一题]20170119”查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; import jav ...

  8. MyBatis:CRUD功能

    在前面已经自动生成了mapper和pojo,接下来我们实现mybatis的CRUD功能,先新建service.controller层的方法. 这里的sid是一个开源的id生成类,写完后,我们还需要在启 ...

  9. 数据结构——基于java的链表实现(真正理解链表这种数据结构)

    原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10759599.html,否则将追究法律责任!!! 一.链表介绍 1.什么是链表? 链表是一 ...

  10. 6、两个数组的交集 II

    6.两个数组的交集 II 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: n ...