selenium之选项卡管理
在使用selenium管理浏览器的时候遇到一些小问题,现将这些小问题作一下总结:
(1)browser是什么?
from selenium import webdriver browser = webdriver.Chrome()
print(browser) # <selenium.webdriver.chrome.webdriver.WebDriver (session="7fa6e41c5d16188b2c9054a97b376ffd")>
这个browser就是一个类的实例。是什么类的实例(其实就是selenium.webdriver.chrome.webdriver.WebDriver这个路径下类的实例),可以通过selenium包进行一步一步查看。
(2)在浏览器中再打开一个窗口
from selenium import webdriver browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
print(browser.current_window_handle) # CDwindow-876A3769096F9B14756B8065F9D09700
browser.execute_script("window.open()")
print(browser.current_window_handle) # CDwindow-876A3769096F9B14756B8065F9D09700
print(browser.window_handles) # ['CDwindow-876A3769096F9B14756B8065F9D09700', 'CDwindow-58192B86EEE5C841A366BA665975F03D']
browser.switch_to.window(browser.window_handles[1])
print(browser.current_window_handle) # CDwindow-58192B86EEE5C841A366BA665975F03D browser.switch_to.window(browser.window_handles[0])
browser.close()
# print(browser.current_window_handle) # selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
# browser.execute_script("window.open()") # selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
browser.switch_to.window(browser.window_handles[0])
browser.execute_script("window.open()")
通过执行javascript的window.open()命令,可以打开一个新的窗口。
通过第5行和第7行执行结果可知:打开新窗口时,当前窗口句柄不会自动切换到新的窗口句柄。但是浏览器显示的当前选项卡却是新窗口!!!,如果想将当前句柄的选项卡置于最前面,执行browser.switch_to.window()再切一下就OK了。
通过第8行可知:所有的窗口句柄都保存在window_handles这个列表里面。
通过第9行命令可以切换窗口,括号里面的browser.window_handles[1]其实就是取列表中的第2个值,这个值和窗口唯一对应。
通过第13行关闭当前选项卡,这时执行第14行,报错!说明关闭当前选项卡之后,浏览器不会自动切换到其它存在的窗口。
注释第14行,打开第15行并执行,报错!说明只有浏览器对象存在当前选项卡的时候,才能够执行新建窗口操作。
通过第16行代码,将当前选项卡切换到0,为什么是0?因为列表中之前的索引0被删了,所以之前的1变成了0。此时执行新建窗口操作,可以正常创建。
(3)创建新选项卡的时候直接打开指定网址
from selenium import webdriver browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
browser.execute_script('window.open("https://www.taobao.com")') # 括号内的网址一样要加引号,不然会报错!
selenium之选项卡管理的更多相关文章
- Selenium 选项卡管理
什么是选项卡: from selenium import webdriver browser = webdriver.Chrome() browser.get("http://www.bai ...
- pycharm窗口选项卡管理
1.主题 我们已经注意到Pycharm的主编辑框是基于窗口选项卡机制显示的,Pycharm选项卡多种多样,这里我们将详细介绍这种选项卡机制. 2.激活的选项卡 每当我们打开一个Python文件时op ...
- python爬虫从入门到放弃(八)之 Selenium库的使用
一.什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行 ...
- 爬虫、请求库selenium
阅读目录 一 介绍 二 安装 三 基本使用 四 选择器 五 等待元素被加载 六 元素交互操作 七 其他 八 项目练习 一 介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决r ...
- Spider_Man_3 の selenium
一:介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作, ...
- selenium用法详解
selenium用法详解 selenium主要是用来做自动化测试,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题. 模拟浏览器进行网页加载,当requests,urllib无法正常获取 ...
- selenium常用内容
一.声明浏览器对象 注意点一,Python文件名或者包名不要命名为selenium,会导致无法导入 from selenium import webdriver #webdriver可以认为是浏览器的 ...
- python+selenium实现登录账户
selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Gr ...
- Selenium库,Python精品教程!
什么是Selenium selenium基本使用 用python写爬虫的时候,主要用的是selenium的Webdriver,我们可以通过下面的方式先看看Selenium.Webdriver支持哪些浏 ...
随机推荐
- react学习(四)之设置 css样式 篇
react中设置css样式 方法一: 行内样式:使用{{ }},与正常jsx中插入js代码不一样,这里需要两个括号. <div style={ { float: 'right',} }> ...
- vue+webpack 安装常见插件
html-webpack-plugin 插件地址:https://www.npmjs.com/package...安装指令: npm install html-webpack-plugin --sav ...
- jQuery效果之封装一个文章图片弹出放大效果
首先先搭写一个基本的格式: $.fn.popImg = function() { //your code goes here } 然后用自调用匿名函数包裹你的代码,将系统变量以变量形式传递到插件内部, ...
- ThinkPhp框架对“数据库”的基本操作
框架有时会用到数据库的内容,在"ThinkPhp框架知识"的那篇随笔中提到过,现在这篇随笔详细的描述下. 数据库的操作,无疑就是连接数据库,然后对数据库中的表进行各种查询,然后就是 ...
- iOS------获取当前时间和当前时间戳
//获取当前的时间 +(NSString*)getCurrentTimes{ NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; ...
- 「Android」单例的五种写法
单例 发现博客园可以很好的设置自己的博客文章的展示,很开心,然后特此发一篇 其实这几种写法大家应该都会的,就权当拿来记录一下吧,以后复习巩固也比较方便. 这篇文章中的代码,来自一篇视频(我想找视频贴上 ...
- PHP 生成器语法
一般你在迭代一组数据的时候,需要创建一个数据,假设数组很大,则会消耗很大性能,甚至造成内存不足. //Fatal error: Allowed memory size of 1073741824 by ...
- zabbix监控tomcat(使用jmx监控,但不使用系统自带模版)
一,zabbx使用jmx监控tomcat的原理分析 1.Zabbix-Server找Zabbix-Java-Gateway获取Java数据 2.Zabbix-Java-Gateway找Java程序(j ...
- spring4笔记----spring4构造注入
与设值注入有以下不同,颜色标出 package com.ij34.web; import com.ij34.servce.people; import com.ij34.servce.root; pu ...
- parent.fraInterface.xxxxxx
fraInterface是自己定义的一个frame的名字,是通过在frame标签中设置name属性实现的.以上那句代码就是通过parent这个公共接口在各个frame间,也就是调用拥有同一个父亲的名为 ...