我们在操作网页的时候,点击有些页面的链接,会重新打开一个窗口,我们要在新页面上操作,就得切换窗口

比如在百度首页的登录框点击注册,会重新打开一个注册的新页面,要在新页面注册,就得先切进新页面

那我们怎么在这两个窗口之间进行切换呢?每个浏览器窗口都有一个唯一的属性句柄(handle)来表示,我们就可以通过句柄来切换

获取当前窗口句柄:

# coding = utf-8
from selenium import webdriver
# 驱动文件路径
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打开百度首页
driver.get(r'https://www.baidu.com/')
# 获取当前窗口句柄
main_windows = driver.current_window_handle
print(main_windows)
# 退出
driver.quit()

获取所有窗口句柄:

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from time import sleep
# 驱动文件路径
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打开百度首页
driver.implicitly_wait(10)
driver.get(r'https://www.baidu.com/')
# 获取当前窗口句柄
main_windows = driver.current_window_handle
print(main_windows)
# 进入注册
driver.find_element_by_link_text("登录").click()
# 这里加一个显示等待,不然有时会报找不到“立即注册这个元素”
WebDriverWait(driver,20).until(lambda x:x.find_element_by_link_text("立即注册")).click()
# 获取当前所有打开的窗口句柄
all_windows = driver.window_handles
print(all_windows)
# 退出
sleep(5)
driver.quit()

窗口切换

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from time import sleep
# 驱动文件路径
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打开百度首页
driver.implicitly_wait(10)
driver.get(r'https://www.baidu.com/')
# 获取当前窗口句柄
main_windows = driver.current_window_handle
print(main_windows)
# 进入注册
driver.find_element_by_link_text("登录").click()
# 这里加一个显示等待,不然有时会报找不到“立即注册这个元素”
WebDriverWait(driver,20).until(lambda x:x.find_element_by_link_text("立即注册")).click()
# 获取当前所有打开的窗口句柄
all_windows = driver.window_handles
print(all_windows)
# 切换进注册页面
for handle in all_windows:
if handle != main_windows:
driver.switch_to.window(handle)
# 获取注册页面窗口句柄
register_windows = driver.current_window_handle
print(register_windows)
# 切换回百度首页
driver.switch_to.window(main_windows)
print(driver.title)
# 退出
sleep(5)
driver.quit()

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

  1. Python3 Selenium多窗口切换

    Python3 Selenium多窗口切换 以腾讯网(http://www.qq.com/)为例,打开腾讯网,点击新闻,打开腾讯新闻,点击新闻中第一个新闻链接. 在WebDriver中封装了获取当前窗 ...

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

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

  3. selenium webdriver窗口切换(上)

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

  4. python3 + selenium 之窗口切换

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

  5. selenium webdriver窗口切换(下)

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

  6. python之selenium多窗口切换

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

  7. Selenium多窗口切换代码

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

  8. selenium多窗口切换定位

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

  9. selenium 多窗口切换(windows)

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

随机推荐

  1. HDU 1087 Super Jumping! Jumping! Jumping! (动态规划、最大上升子序列和)

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  2. node项目自动化部署--基于Jenkins,Docker,Github(2)配置节点

    上一篇文章中准备工作已经完成的差不多了 这一篇主要讲解 Jenkins 上面的相关配置 为了让代码部署到所有的子节点上 所以我们首先需要在 Jenkins 中添加我们希望代码部署到的节点 配置节点 首 ...

  3. 阿里云安装filezilla

    1.连接服务器 ssh 或者 远程连接 到服务器: 2.安装相应软件 安装EPEL,EPEL是yum的一个软件源,里面包含了许多基本源里没有的软件: yum -y install epel-relea ...

  4. Anaconda折腾记(1)

    Anaconda折腾记 谨此记录小白的我在Anaconda里面的摸爬滚打 更换更新源 可以不使用命令,直接进入C盘,进入user文件夹,进入当前的用户文件夹下,记得显示隐藏文件. 找到.condarc ...

  5. CSP-S 2019游记

    Day 0 下午到了广州,酒店还不错,不好的是附近没有什么吃饭的地方 zyd和ljz巨神说如果上了450就女装. 晚上看了一下写过模板,本来准备敲几个新模板的的结果被卡常,心态没了.于是又把wys的卡 ...

  6. Python细节(二)小数据池

    3.8小数据池 python是由代码块构成的 代码块,一个模块.一个函数,一个类,一个文件,eval(),exec()执行的时候也是一个代码块 1.内存地址 id() 通过id() 我们可以查看到一个 ...

  7. C# 从集合A中取出集合B中不包含的数据(根据ID判断),并添加到集合B中

    从一个集合A中取出另一个集合B中不包含的数据,并添加到集合B中 private void button2_Click(object sender, EventArgs e) { var ListA = ...

  8. homebrew学习(五)之homebrew cask和homebrew services

    homebrew cask 如果我想安装Chrome浏览器怎么办?试试下面的命令: brew install google-chrome 发现并不能安装,没有该软件.怎么办?好消息是一个叫做homeb ...

  9. scala学习笔记(1)

    scala ------------------------- java语言脚本化 1.安装scala-2.12.1.msi 2.进入到scala的命令行 3.Tab键会有补全的功能 1.scala程 ...

  10. vue项目1-pizza点餐系统2-配置路由跳转

    功能目标:点击导航栏中的菜单.主页.路由跳转到不同的组件,点击谁就在在导航栏下展示谁. 1.在router文件夹中(在用脚手架cli搭建项目时,有个couter的选yes)的index.js中,导入如 ...