Python之selenium创建多个标签页
最近在做一个项目,需要用到cookies登录,想法是,在同一个浏览器下,打开两个标签页进行。让其自动获取cookies,先记录,不行的话,到时候再手动加载cookies。
1 '''
2 #selenium加载新标签页
3 '''
4 #导入所需库
5 from selenium import webdriver
6 from selenium.webdriver.common.keys import Keys
7 import time
8
9 #初始化浏览器的一些参数
10 options = webdriver.ChromeOptions() #实例化
11 options.add_argument('--headless') #无头模式
12 options.add_argument('--disable-gpu') #禁用gpu硬件加速
13 options.add_argument('--window-size=1920, 1080') #初始化窗口大小,网上很多人说用maximize_window()最大化窗口,经测试,然并卵
14
15 #定义两个链接,以便观察
16 url1 = 'https://www.baidu.com' #用在浏览器标签页1
17 url2 = 'https://www.sina.com.cn' #用在浏览器标签页2
18
19 #初始化浏览器
20 driver = webdriver.Chrome(options=options)
21 #driver.maximize_window() #然并卵的最大化窗口函数
22
23 #开始请求网页
24 driver.get(url1)
25 driver.implicitly_wait(5) #等待加载,用time.sleep()的话,我更建议用这个函数
26 driver.save_screenshot('baidu.png') #截图查看是否符合预期
27 #打印以便比较
28 print(driver.window_handles)
29 cookies = driver.get_cookies()
30 print(cookies)
31
32 #新增标签页
33 newTab = 'window.open("https://www.sina.com.cn");' #就当成js语句吧
34 driver.execute_script(newTab) #输出js语句
35 #切换标签页
36 #driver.switch_to_window(driver.window_handles[-1]) #切换到最后一个标签页,switch_to_window在3.7已经不推荐使用了(反正我的版本是3.7.9,姑且这么说)
37 driver.switch_to.window(driver.window_handles[-1]) #切换到第二个标签页
38 cookies2 = driver.get_cookies()
39 print(cookies2)
40
41 #截图
42 driver.save_screenshot('sina.com.cn.png')
43 #打印第二个标签页的值用来和第一个比较
44 print(driver.window_handles)
方法总是不止一种,再加一种:
1 '''
2 #selenium创建标签页方法2
3 '''
4 from selenium import webdriver
5 from selenium.webdriver import ActionChains
6 from selenium.webdriver.common.keys import Keys
7
8 #初始化一些参数
9 options = webdriver.ChromeOptions()
10 options.add_argument('--headless')
11 # options.add_argument('--disable-gpu')
12 options.add_argument('--window-size=1920, 1080')
13
14 #定义两个url
15 url1 = 'https://www.baidu.com'
16 url2 = 'https://www.sina.com.cn'
17
18 #初始化浏览器
19 driver = webdriver.Chrome()
20 #请求第一个网页
21 driver.get(url1)
22 driver.implicitly_wait(5) #等待加载
23 driver.save_screenshot('baidu.png') #保存截图
24 baiduCookies = driver.get_cookies() #获取cookie
25 print(baiduCookies) #打印cookie
26
27 #实例化一个行为
28 actions = ActionChains(driver)
29 # 经测试下面的按键没用
30 # #调用actions模拟按键,先按下键盘下的Control键,然后再发送t,然后再松开Control键,这样我们就发送了一个control+t的命令,即添加标签页
31 # actions.key_down(Keys.CONTROL).send_keys('t').key_up(Keys.CONTROL).perform()
32 # 调整思路,那就在原标签页按住Ctrl+链接也会打开新的标签页,一般浏览器都这样
33 news = driver.find_element_by_link_text('新闻') #找到带链接的新闻标签
34 actions.key_down(Keys.CONTROL).click(news).key_up(Keys.CONTROL).perform() #找到news并按住ctrl点击
35 #切换到第二个标签页
36 driver.switch_to.window(driver.window_handles[-1])
37 #利用第二个标签页请求第二个url
38 driver.get(url2)
39 driver.save_screenshot('anotherTab.png') #保存截图
40 anotherTabCookies = driver.get_cookies() #获取cookies
41 print(anotherTabCookies) #打印cookies
42
43 # driver.close() #是退出当前句柄的标签页
44 # driver.quit() #退出浏览器
看到网上有帖子说,打开第二个标签页很卡,也就是根本加载不出第二段代码的代码41行。不知道是我网速问题还是真的如网上的帖子所说,懒得等,直接开启硬件加速,问题解决。
Python之selenium创建多个标签页的更多相关文章
- selenium WebDriver 对浏览器标签页的切换
关于selenium WebDriver 对浏览器标签页的切换,现在的市面上最新的浏览器,当点击一个链接打开一个新的页面都是在浏览器中打开一个标签页,而selenium只能对窗口进行切换的方法,只能操 ...
- selenium获取新页面标签页(只弹出一个新页面的切换)
selenium获取新页面标签页(只弹出一个新页面的切换) windows = driver.current_window_handle #定位当前页面句柄 all_handles = driver. ...
- selenium chrome在新标签页打开链接的方法
目前chrome是我在实现webdriver时运行最稳定的浏览器,如何利用webdriver打开多个标签页和链接呢,到处查找得到的往往只是如何打开标签页.打开标签页很简单,chrome浏览器打开标签页 ...
- selenium多个标签页的切换(弹出新页面的切换)
1_windows = driver.current_window_handle #定位当前页面句柄 all_handles = driver.window_handles #获取全部页面句柄 for ...
- EasyUI中动态生成标签页
这是最近学到的内容,当时是有思路但是不知道怎么获取当前的点击对象,就没有实现功能,通过更深入的学习,我知道了不仅仅是Java,Oracle中有一个this,同样的EasyUI中也存在一个this,来获 ...
- 4. VIM 系列 - 认识VIM的缓冲区、窗口、标签页
目录 1. 缓冲区 2. 窗口 3. 标签页 4. 设置一下热键 1. 缓冲区 文件和缓冲区的区别 vim 打开一个文件时,其实是从磁盘中读取文件到内存中,vim的一些操作其实是在操作缓冲区, 当使用 ...
- selenium+python 浏览器标签页跳转 switch_to_window
浏览器页面跳转方法记录: from selenium import webdriver import time browser = webdriver.Chrome() first_url='http ...
- python selenium 对浏览器标签页进行关闭和切换
1.关闭浏览器全部标签页 driver.quit() 2.关闭当前标签页(从标签页A打开新的标签页B,关闭标签页A) driver.close() 3.关闭当前标签页(从标签页A打开新的标签页B,关闭 ...
- EasyUI创建异步树形菜单和动态添加标签页tab
创建异步树形菜单 创建树形菜单的ul标签 <ul class="easyui-tree" id="treeMenu"> </ul> 写j ...
随机推荐
- python应用(5):变量类型与数据结构
如前所说,写程序如同给算法写壳,而算法就是流程,所以流程是程序的主角(但这个流程不一定要你来设计).在程序中,为了配合流程(算法)的实现,除了顺序.分支与循环语句的使用,还要借助"变量&qu ...
- 15_Android文件读写操作
1. 文件的基本操作 File类的相关技巧和操作:文件的创建.重命名和删除,文件夹的创建和删除等操作. 1 package control; 2 3 import java.io.File; 4 5 ...
- 什么,kafka能够从follower副本读数据了 —kafka新功能介绍
最近看了kafka2.4新版本的一些功能特性,不得不说,在kafka2.0以后,kafka自身就比较少推出一些新的feature了,基本都是一些修修补补的东西.倒是kafka connect和kafk ...
- form 表单上传文件及传输数据的编码格式
form中的 action 控制请求往什么地方提交 method 请求方式 如果不写默认是get 请求 如果想传文件 必须要把默认的urlencoded的改成enctype="multi ...
- 并发编程实战-ConcurrentHashMap源码解析
jdk8之前的实现原理 jdk1.7中采用的数据结构是Segment + HashEntry 的方式进行实现.主要的结构如下图: ConcurrentHashMap 并不是将每个方法都在同一个锁上同步 ...
- 第三十二章、使用splitDockWidget和tabifyDockWidget嵌套布局QDockWidget的PyQt人机对话案例
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 在第<第三十一章.containers容器类部件QDo ...
- 第7章 Python类型、类、协议目录
第7.1节 面向对象程序设计的相关知识 第7.2节 关于面向对象设计的一些思考 第7.3节 Python特色的面向对象设计:协议.多态及鸭子类型 第7.4节 Python中与众不同的类 第7.5节 揭 ...
- PyQt(Python+Qt)学习随笔:QListWidget的访问当前项的currentItem和setCurrentItem方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 currentItem方法返回列表部件当前选择的项,setCurrentItem方法用于设置当前项. ...
- 问题:PyCharm的几种调试方法的区别
关于PyCharm的调试方式,step into.step over.step out.run to cursor.resume programe与c语言相关的调试器功能基本相同,但PyCharm提供 ...
- WindowsServerU盘系统盘制作
一.工具及安装包准备: 1.UltraISO软碟通 下载:链接:https://pan.baidu.com/s/1gixSdpEjvh6I31rGeh1-Gg 提取码:9zbx (大学期间无意间找到一 ...