第一种方法:

使用场景:

打开多个窗口,需要定位到新打开的窗口

使用方法:

# 获取打开的多个窗口句柄
windows = driver.window_handles
# 切换到当前最新打开的窗口
driver.switch_to.window(windows[-1])

举例说明:

 1 # _._ coding:utf-8 _._
 2
 3 """
 4 :author: 花花测试
 5 :time: 2017.05.03
 6 :content: 使用第一种方法切换浏览器
 7 """
 8
 9 from selenium import webdriver
10 import time
11
12 #   打开课工场网站主页【第一个窗口】
13 driver = webdriver.Chrome()
14 driver.get('http://www.kgc.cn/')
15 driver.maximize_window()
16
17 #   点击全部课程,进入课程库【第二个窗口】
18 driver.find_element_by_link_text('全部课程').click()
19 time.sleep(3)
20
21 #   使用第一种方法切换浏览器【切换到第二个窗口】
22 windows = driver.window_handles
23 driver.switch_to.window(windows[-1])
24 time.sleep(3)
25
26 #   点击课程库中的某个课程,进入课程详情界面【在第二个窗口页面进行元素点击操作,来判断窗口是否切换成功】
27 driver.find_element_by_xpath('//*[@id="yw1"]/ul/li[2]').click()
28 time.sleep(3)
29
30 #   关闭浏览器
31 driver.quit()
32 print('测试通过')

第二种方法:

使用场景:

打开两个窗口,需要定位到新打开的窗口

使用方法:

# 获得打开的第一个窗口句柄
window_1 = driver.current_window_handle
# 获得打开的所有的窗口句柄
windows = driver.window_handles
# 切换到最新的窗口
for current_window in windows:
    if current_window != window_1:
        driver.switch_to.window(current_window)

举例说明:


 1 # _._ coding:utf-8 _._
 2
 3 """
 4 :author: 花花测试
 5 :time: 2017.05.03
 6 :content: 使用第二种方法切换浏览器
 7 """
 8
 9 from selenium import webdriver
10 import time
11
12 from selenium import webdriver
13 import time
14
15 #   打开课工场网站主页【第一个窗口】
16 driver = webdriver.Chrome()
17 driver.get('http://www.kgc.cn/')
18 driver.maximize_window()
19
20 #   点击全部课程,进入课程库【第二个窗口】
21 driver.find_element_by_link_text('全部课程').click()
22 time.sleep(3)
23
24 #   使用第二种方法切换浏览器【切换到第二个窗口】
25 window_1 = driver.current_window_handle
26 windows = driver.window_handles
27 for current_window in windows:
28     if current_window != window_1:
29         driver.switch_to.window(current_window)
30 time.sleep(3)
31
32 #   点击课程库中的某个课程,进入课程详情界面【在第二个窗口页面进行元素点击操作,来判断窗口是否切换成功】
33 driver.find_element_by_xpath('//*[@id="yw1"]/ul/li[2]').click()
34 time.sleep(3)
35
36 #   关闭浏览器
37 driver.quit()
38 print('测试通过')

两种方法的区别:
1、第一种方法比较简单,能提升整体代码的性能
2、第二种方法是大家最常用的方法,比较容易理解

selenium 切换窗口的几种方法的更多相关文章

  1. python3 selenium 切换窗口的几种方法

    第一种方法: 使用场景: 打开多个窗口,需要定位到新打开的窗口 使用方法: # 获取打开的多个窗口句柄windows = driver.window_handles# 切换到当前最新打开的窗口driv ...

  2. python3 打开页面后多窗口处理三种方法

    多窗口处理三种方法 导包,实例化浏览器from selenium import webdriver fx=webdriver.Firefox()方法一fx.switch_to.window(fx.wi ...

  3. jquery mobile切换页面的几种方法

    jquery mobile切换页面的几种方法 - 不厚道青蛙之焦油潭 - 博客频道 - CSDN.NET jquery mobile切换页面的几种方法 分类: phonegap html5 2012- ...

  4. Windows 10 应用创建模糊背景窗口的三种方法

    原文 Windows 10 应用创建模糊背景窗口的三种方法 现代的操作系统中创建一张图片的高斯模糊效果非常容易,不过如果要在窗口中获得模糊支持就需要操作系统的原生支持了.iOS/Mac 和 Windo ...

  5. selenium切换窗口

    在做网页自动化测试的时候,难免会打开很多个网页,那么,如何在多个窗口之间切换呢? 获取窗口的唯一标识用句柄(handle)表示,因此只需要切换句柄,就可以灵活的在各窗口之间切换. 下面介绍几个方法 c ...

  6. OD 实验(四) - 去除 NAG 窗口的几种方法

    程序: 运行 弹出一个窗口,说要注册 点击确定,到主窗口 关闭主窗口 然后弹出提醒注册的对话框 逆向程序 用 OD 打开程序 GetModuleHandleA 获取程序模块的句柄,程序在内存中的基址 ...

  7. Response.Redirect 打开新窗口的两种方法

    一般情况下,Response.Redirect 方法是在服务器端进行转向,因此,除非使用 Response.Write("<script>window.location='htt ...

  8. 多测师讲解selenium ——切换窗口——打印句柄_高级讲师肖sir

    (一)同一个窗口打开两个浏览器 from selenium import webdriverfrom time import sleepdrvier=webdriver.Chrome()url='ht ...

  9. selenium 切换窗口 每次成功code

    最近用了网络上别人的一段切换窗口的code每次成功了,不错,学习 // 根据Title切换新窗口 public boolean switchToWindow_Title(WebDriver drive ...

随机推荐

  1. 谈PHP中的钩子

    钩子,英文为hooks.在程序中应用相当广泛,但是究竟什么是钩子呢?本人介绍一下目前本人对钩子的理解和相关心得. 假如有这么一段程序流: function fun(){ funA(); funB(); ...

  2. MySQL数据库报错:Too many connection

    每次搭建环境运行一段时间,后台就会报错:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data sourc ...

  3. 如何查找Oracle某列值相同的字段

    相关的sql语句如下 select xm_guidfrom T_NZYDKgroup by xm_guidhaving count (*)>1

  4. 访问NopCommerce的Admin 运行Nop.Admin后台管理

    Step 1.下载和安装NopCommerce的源码: Step 2.打开和运行Presentation下的Nop.Web 项目: Step 3.初次运行 会弹出界面 配置管理员账号 和 数据库信息: ...

  5. jruby+watir-webdriver+cucumber自动化测试环境配置

    1.安装java运行时环境,且配置环境变量 2.安装jruby环境,建议选择安装1.6.8或1.6.7版本的 3.安装需要的gem包 gem install activerecord -v='3.0. ...

  6. as 开启代码混淆和混淆规则

    app的builde.gradle的文件下,buildTypes节点添加release节点,minifyEnabled属性表示是否开启混淆,proguardFiles表示混淆依赖的文件,具体开启方法如 ...

  7. iOS上架问题解决

    dns问题 http://iphone.91.com/tutorial/syjc/140509/21686339.html 网络问题 手机4g开wifi,上传提交多次 时间问题 东八区下午6点上架成功 ...

  8. CPP-基础:cout

    C++编程语言互换流中的标准输出流,需要iostream.h支持.读为 "c out". 使用范例 //用户输入的数字由cin保存于变量a中,并通过cout输出. #include ...

  9. shell脚本,编程题练习。

    题目是:将 文件file为 b+b+b+b+b+b+b+b 变为 b+b=b+b=b+b=b+b 解答方法如下:

  10. 121. Best Time to Buy and Sell Stock@python

    Say you have an array for which the ith element is the price of a given stock on day i. If you were ...