博客
关于我
selenium+python之切换窗口
阅读量:506 次
发布时间:2019-03-07

本文共 1420 字,大约阅读时间需要 4 分钟。

本文目标:使用selenium操作浏览器打开的新窗口,在新窗口上点击任意元素

预置条件:selenium已能控制浏览器打开

selenium是通过控制浏览器每个窗口的句柄来实现对每个窗口的控制的。

首先,先获取当前所有窗口的句柄。所有的句柄存在window_handles这个属性里(这个属性是一个列表):`

from selenium.webdriver import Chromefrom time import sleepwith Chrome() as driver:    '''使用上下文管理器来操作driver能够更合理的使用计算机资源,比driver = Chrome()的写法更好'''    # 访问百度网站,然后等待2秒    driver.get('http://www.baidu.com')    sleep(2)    # 获取当前所有窗口的句柄    handles = driver.window_handles    print(handles)

代码执行时,打开的窗口如下:

在这里插入图片描述
可以看到chrome会打开两个窗口,将它们的句柄打印出来,结果如下:
在这里插入图片描述
这个值会不会变呢?我第二次执行,再次打印窗口的句柄,结果如下:
在这里插入图片描述
看来句柄的值是会变的,每次打开同一窗口,句柄值都会变化

我将浏览器换成Edge,再次执行,获得到得到句柄值如下:

在这里插入图片描述
看来不管是Chrome还是Edge,这个句柄的名称格式都是一样的:CDwindow-XXXX

所有窗口的句柄值会按照窗口打开的顺序这个列表里,因此,可以根据根据切换句柄的值来实现切换窗口。这里要注意的是,是按照窗口打开的顺序,不是我们所看到的从左到右的顺序。比如在下图里,“data”窗口是先于“百度新闻”窗口打开的,因此,即使它在界面上是在百度新闻的后面,但是在window_handles列表里,它是排在百度新闻的前面的。

在这里插入图片描述

切换窗口的句柄的方法是:driver.switch_to.window()

下面的代码里,我将切换窗口,点击“百度新闻”窗口里的“科技”链接

from selenium.webdriver import Chromefrom time import sleepwith Chrome() as driver:    '''使用上下文管理器来操作driver能够更合理的使用计算机资源,比driver = Chrome()的写法更好'''    # 访问百度网站,然后等待2秒    driver.get('http://www.baidu.com')    sleep(2)    # 点击“新闻”链接    driver.find_element_by_link_text('新闻').click()    # 获取当前所有窗口的句柄    handles = driver.window_handles    print(handles)    # 因为新闻窗口的第三个窗口,因此切换到第三个句柄    driver.switch_to.window(handles[2])    sleep(10)    # 此时driver开始控制“新闻”窗口,点击"新闻"窗口上的“科技”链接    driver.find_element_by_link_text("科技").click()    sleep(2)

执行结果如下,成功点击“科技”链接:

在这里插入图片描述

转载地址:http://bkljz.baihongyu.com/

你可能感兴趣的文章
Vue3.0 性能提升主要是通过哪几方面体现的?
查看>>
NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
查看>>
NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
查看>>
NLP、CV 很难入门?IBM 数据科学家带你梳理
查看>>
NLP三大特征抽取器:CNN、RNN与Transformer全面解析
查看>>
NLP入门(六)pyltp的介绍与使用
查看>>
NLP学习笔记:使用 Python 进行NLTK
查看>>
NLP度量指标BELU真的完美么?
查看>>
NLP的不同研究领域和最新发展的概述
查看>>
NLP的神经网络训练的新模式
查看>>
NLP采用Bert进行简单文本情感分类
查看>>
NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
查看>>
NLP项目:维基百科文章爬虫和分类【02】 - 语料库转换管道
查看>>
NLP:从头开始的文本矢量化方法
查看>>
NLP:使用 SciKit Learn 的文本矢量化方法
查看>>
NLTK - 停用词下载
查看>>
nmap 使用总结
查看>>
nmap 使用方法详细介绍
查看>>
nmap使用
查看>>
nmap使用实战(附nmap安装包)
查看>>