一、获取当前窗口句柄

1.元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(handle)来识别。

2.人为操作的话,可以通过眼睛看,识别不同的窗口点击切换。但是脚本没长眼睛,它不知道你要操作哪个窗口,这时候只能句柄来判断了。

3.获取当前页面的句柄:driver.current_window_handle

二、获取所有句柄

1.定位赶集网招聘求职按钮,并点击

2.点击后,获取当前所以的句柄:window_handles

三、切换句柄

网上大部分教程都是些的第一种方法,估计是互相抄吧,小编这里新增一个更简单的方法,直接从获取所有的句柄list里面取值。

方法一:

1.循环判断是否与首页句柄相等

2.如果不等,说明是新页面的句柄

3.获取的新页面句柄后,可以切换到新打开的页面上

4.打印新页面的title,看是否切换成功

方法二:

1.直接获取all_h这个list数据里面第二个hand的值:all_h[1]

四、关闭新窗口,切回主页

1.打开新页面后,其实只想验证新页面跳转对不对,这里可以做个简单的验证,获取当前页面的title验证

2.验证完后切关闭新窗口

3.切回句柄到首页

4.打印当前页面的句柄,看是否切换到首页了

五、参考代码

# coding:utf-8

from selenium import webdriver

driver = webdriver.Firefox()

driver.get("http://bj.ganji.com/")

h = driver.current_window_handle

print h  # 打印首页句柄

driver.find_element_by_link_text("北京招聘").click()

all_h = driver.window_handles

print all_h     # 打印所有的句柄

# 方法一:判断句柄,不等于首页就切换

# for i in all_h:                       # 这里不建议用for循环了,很多小伙伴懵的

#     if i != h:

#         driver.switch_to.window(i)

#         print driver.title

# 方法二:获取list里面第二个直接切换

driver.switch_to.window(all_h[1])

print driver.title

# 关闭新窗口

driver.close()

# 切换到首页句柄

driver.switch_to.window(h)

# 打印当前的title

print driver.title

python selenium句柄操作的更多相关文章

  1. python selenium 相关操作

    selenium : 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Fi ...

  2. python selenium --browser 操作

    本节知识点: 打印URL 将浏览器最大化 设置浏览器固定宽.高 操控浏览器前进.后退 打印URL 上一节讲到,可以将浏览器的title打印出来,这里再讲个简单的,把当前URL打印出来.其实也没啥大用, ...

  3. python+Selenium之操作滚动条

    当我们做测试的时候,如果页面过长,就会定位元素失败,这时可以使用move_to_element方法跳到该元素的位置再操作: from selenium.webdriver.common.action_ ...

  4. Python+selenium 之操作Cookie

    在验证浏览器中cookie是否正确时,有时基于真实cookie的测试是无法通过白盒和集成测试进行的.Webdriver提供了操作Cookie的相关方法,可以读取,添加和删除cookie信息. 文本we ...

  5. Python+selenium(操作隐藏元素)

    测试过程中,偶尔会碰到一些页面的隐藏元素,如下,是小编举的一个简单的例子: test.html <html> <head></head> <body> ...

  6. Python+Selenium - js操作

    js操作:日期框 本部分涉及两个知识点:DOM树和js DOM树教程链接: https://www.w3school.com.cn/htmldom/index.asp js教程链接 https://w ...

  7. Python+Selenium - 键盘操作

    导包代码: from selenium.webdriver.common.keys import Keys 用法: driver.find_element("id","k ...

  8. Python+Selenium - 鼠标操作

    鼠标操作类:action_chains模块的ActionChains类 使用组成:操作 + 执行(perform()) 导入代码 from selenium.webdriver.common.acti ...

  9. python+selenium自动测试之WebDriver的常用API(基础篇二)

    本篇介绍一下python+selenium复杂操作的处理,基于python3.6,selenium3.141,详细资料介绍查看官方API文档,点击这里 一.常见特殊情况处理如iframe/弹窗处理 有 ...

随机推荐

  1. 世界地图展开图,来自 Simon's World Map

    Simon's World Map 软件下载地址:https://www.dit-dit-dit.com/Blog/PostId/42/simons-world-map

  2. python pandas进行条件筛选时出现ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().”

    在使用pandas进行条件筛选时,使用了如下的代码: fzd_index=data[(data['实际辐照度']<mi)or(data['实际辐照度']>ma)].index 原本以为,并 ...

  3. 亮剑.NET第二章

    第二章主要讲解C#中各种让人模糊不清的概念,用法,类型等等. 1.Equals()与==区别 当比较两个值类型时,二者基本一致,当比较引用类型时,==比较的是引用类型的地址是否一致,即两个引用是否指向 ...

  4. [Spark] 07 - Spark Streaming Programming

    Streaming programming 一.编程套路 编写Streaming程序的套路 创建DStream,也就定义了输入源. 对DStream进行一些 “转换操作” 和 "输出操作&q ...

  5. php接受的post数据类型

    通常情况下用户使用浏览器网页表单向服务器post提交数据,我们使用PHP的$_POST接收用户POST到服务器的数据,并进行适当的处理.但有些情况下,如用户使用客户端软件向服务端php程序发送post ...

  6. php将图片存储在阿里云oss存储上

    创建两个方法 1.上传方法 use OSS\OssClient; use think\Config; use OSS\Core\OssException; /** * 存储文件 * * @param ...

  7. node连接数据库

    一.在package.json依赖模块添加: "mysql" : "latest",执行npm install: 二.module目录下新建mysql.js: ...

  8. 3D 飞行器航迹规划

    3D-Route-Planning 三维航迹规划 -Matlab 本次代码主要解决数学建模中多约束条件下的航迹规划问题 解决的问题如下:   复杂环境下航迹快速规划是智能飞行器控制的一个重要课题.由于 ...

  9. adb命令整理(持续整理)

    用到过的adb命令都整理下来,省的一直百度,还不一定能找到合适的答案 获得正在运行app的包名 :adb shell dumpsys window | findstr mCurrentFocus 1. ...

  10. 使用python asyncio+aiohttp做接口测试(TODO)

    线程是操作系统层面的“并行”, 协程是应用程序层面的“并行”. 协程本质上就是:提供一个环境,保存一些需要等待的任务,当这些任务可以执行(等待结束)的时候,能够执行.再等待的过程中,程序可以执行别的任 ...