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 ...
随机推荐
- laravel数据填充
post表有这2个字段 填充20条数据, 执行 php artisan tinker 执行预览 factory(App\Post::class,20)->make(); 插入数据库 factor ...
- 企业安全01-Apache solr XML实体注入漏洞CVE-2017-12629
Apache solr XML 实体注入漏洞CVE-2017-12629 一.简介 Apache Solr 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apac ...
- redis 一致性分析
转载: https://blog.csdn.net/qq32933432/article/details/108690254
- Kubernetes-20:日志聚合分析系统—Loki的搭建与使用
日志聚合分析系统--Loki 什么是Loki? Loki 是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统.它的设计非常经济高效且易于操作,因为它不会 ...
- 08_UI控件
uiControl整体界面如下图所示,按照视频教程,学习控件由于是初学,都是最基础知识.还有ImageSwitcher.Gallery未更新,o(╯□╰)o 1 package com.example ...
- 教学之Treap
放在前面的话 本蒟蒻因为最近的题目总是搞点奇奇怪怪的平衡树,就去学了下\(Treap\) 现在来总结一下 由于本人是个蒟蒻,本文可能有部分错误,麻烦各位读者大佬在评论区提醒 什么是\(Treap\) ...
- 莫比乌斯反演进阶-洛谷P2257/HDU5663
学了莫比乌斯反演之后对初阶问题没有任何问题了,除法分块也码到飞起,但是稍微变形我就跪了.用瞪眼观察法观察别人题解观察到主要内容除了柿子变形之外,主要就是对于miu函数的操作求前缀和.进而了解miu函数 ...
- PyQt(Python+Qt)学习随笔:formLayout的layoutRowWrapPolicy属性
Qt Designer的表单布局(formLayout)中,layoutRowWrapPolicy用于控制表单布局中表单行的标签和输入部件之间是否换行.如图: 上图中蓝色标记圈起来的下拉列表数据是其可 ...
- 小程序editor篇-基本使用图片上传
今天小程序项目内,要弄一个editor,富文本编辑功能,支持图文并茂,前几天刚好看了小程序的demo应用,刚好看到editor这个东东,那就安排! 官网示例git地址 大概看了下文档,拉下官方示例,看 ...
- 6种css3 transform图片悬停动态效果
html骨架代码 <!DOCTYPE html> <html> <head lang="en"> <meta charset=" ...