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支持哪些浏 ...
随机推荐
- JavaScript是如何工作: 深入探索WebSocket和HTTP/2与SSE + 如何选择正确的路径!
原文:<JavaScript是如何工作: 深入探索 websocket 和HTTP/2与SSE +如何选择正确的路径! 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 文章底部分 ...
- Chrome 开发者工具
打开开发工具 (1)在Chrome菜单中选择 更多工具 > 开发者工具. (2)在页面元素上右键点击,选择 "检查". (3)使用快捷键 Ctrl+Shift+I (Wind ...
- 如何用ABP框架快速完成项目(8) - 用ABP一个人快速完成项目(4) - 能自动化就不要手动 - 使用自动化测试(BDD/TDD)
做为一个程序员, 深深知道计算机自动化的速度是比人手动的速度快的, 所以”快速”完成项目的一个重要武器就是: 能自动化就不要手动. BDD/TDD有很多优势, 其中之一就是自动化, 我们这节文章先 ...
- Mysql LIMIT 分页
格式: LIMIT index, size // index:从哪一行(第几条)开始查,size:多少条 分页: LIMIT (currentPage-1)*pageSize, pageSiz ...
- JMeter java.net.URISyntaxException:Illegalcharacterinquery解决方案
java.net.URISyntaxException: Illegal character in query解决方案 by:授客 QQ:1033553122 测试环境 apache-jmeter ...
- Android为TV端助力 切换fragment的两种方式
使用add方法切换时:载入Fragment1Fragment1 onCreateFragment1 onCreateViewFragment1 onStartFragment1 onResume用以下 ...
- 「Android」 基于Binder通信的C/S架构体系认知
C/S架构(Client/Server,即客户机/服务器模式)分为客户机和服务器两层:第一层是在客户机系统上结合了表示与业务逻辑,第二层是通过网络结合了数据库服务器.简单的说就是第一层是用户表示层,第 ...
- 区块链:创建简单的HelloWorld-WebDApp
Node.js 一个建立在Chrome的JavaScript运行环境上的平台,用以容易地建立快速而可扩展的网络应用:下载地址:https://nodejs.org/en/ Turffle 以太坊(Et ...
- Android--底部导航栏的动态替换方案
1.通常来说,一般情况下,我们的app的BottomTab会有集中实现方式. 自定义view,然后自己写逻辑去实现互斥. 自由度最高,因为啥都是自己写的. 使用RadioGroup+RadioButt ...
- Scala隐式参数
Scala方法可以具有隐式参数列表,由参数列表开头的implicit关键字标记.如果参数列表中的参数没有像往常一样传递,Scala将查看它是否可以获得正确类型的隐式值,如果可以,将自动传递. Scal ...