最近在做一个项目,需要用到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创建多个标签页的更多相关文章

  1. selenium WebDriver 对浏览器标签页的切换

    关于selenium WebDriver 对浏览器标签页的切换,现在的市面上最新的浏览器,当点击一个链接打开一个新的页面都是在浏览器中打开一个标签页,而selenium只能对窗口进行切换的方法,只能操 ...

  2. selenium获取新页面标签页(只弹出一个新页面的切换)

    selenium获取新页面标签页(只弹出一个新页面的切换) windows = driver.current_window_handle #定位当前页面句柄 all_handles = driver. ...

  3. selenium chrome在新标签页打开链接的方法

    目前chrome是我在实现webdriver时运行最稳定的浏览器,如何利用webdriver打开多个标签页和链接呢,到处查找得到的往往只是如何打开标签页.打开标签页很简单,chrome浏览器打开标签页 ...

  4. selenium多个标签页的切换(弹出新页面的切换)

    1_windows = driver.current_window_handle #定位当前页面句柄 all_handles = driver.window_handles #获取全部页面句柄 for ...

  5. EasyUI中动态生成标签页

    这是最近学到的内容,当时是有思路但是不知道怎么获取当前的点击对象,就没有实现功能,通过更深入的学习,我知道了不仅仅是Java,Oracle中有一个this,同样的EasyUI中也存在一个this,来获 ...

  6. 4. VIM 系列 - 认识VIM的缓冲区、窗口、标签页

    目录 1. 缓冲区 2. 窗口 3. 标签页 4. 设置一下热键 1. 缓冲区 文件和缓冲区的区别 vim 打开一个文件时,其实是从磁盘中读取文件到内存中,vim的一些操作其实是在操作缓冲区, 当使用 ...

  7. selenium+python 浏览器标签页跳转 switch_to_window

    浏览器页面跳转方法记录: from selenium import webdriver import time browser = webdriver.Chrome() first_url='http ...

  8. python selenium 对浏览器标签页进行关闭和切换

    1.关闭浏览器全部标签页 driver.quit() 2.关闭当前标签页(从标签页A打开新的标签页B,关闭标签页A) driver.close() 3.关闭当前标签页(从标签页A打开新的标签页B,关闭 ...

  9. EasyUI创建异步树形菜单和动态添加标签页tab

    创建异步树形菜单 创建树形菜单的ul标签 <ul class="easyui-tree" id="treeMenu"> </ul> 写j ...

随机推荐

  1. 本地VM安装虚拟机,使用xshell连接

    首先把VM设置成上面那样 在ubuntu里面安装ssh apt-get install openssh-server 启动服务 /etc/init.d/ssh startifconfig 查看ip x ...

  2. Win搭建JAVA环境

    一:下载JDK 下载链接:https://www.oracle.com/java/technologies/javase-downloads.html 选择你的系统环境进行下载 二:安装JDK 直接运 ...

  3. 怎么用fio测试存储性能

    1 /// -rw=read(100%顺序读) -rw=write(100%顺序写) -rw=randread(100%随机读) -rw=randwrite(100%随机写), 2 ///-rw=rw ...

  4. jquery动态生成的select下拉框,怎么设置默认的选中项?

    这两天都被这问题困扰,可能是我不太懂前端.我做layui表格行编辑,点击编辑按钮弹出layer,里边有一个民族的下拉框不能直接显示后台传过来的值.我把民族数组用jquery添加到了select里边,可 ...

  5. jdk从1.8降到jdk1.7失败

    1.将JAVA_HOME:的路径更改为1.7的相关路径,例如我的:C:\Java\jdk1.7.0_80 2.此时查看版本:Java -version,如果是1.8的版本,就把path路径下的%JAV ...

  6. html基础标签用法

    head title 行级双 网页标题标签 meta 单 存放网页重要信息,字符集,搜索索引,简介等(不显示) a 标签行内双标签 href="跳转路径", (JavaScript ...

  7. Arcgis100.4 加载天地图不显示--备注一哈

    Arcgis100.4 默认添加了请求referer 值,天地图会拒绝请求,替换为http://map.tianditu.gov.cn/ 可正常显示.(arcgis 降级到100.1也可正常显示) R ...

  8. 第7.22节 Python中使用super调用父类的方法

    第7.22节 Python中使用super调用父类的方法 前面章节很多地方都引入了super方法,这个方法就是访问超类这个类对象的.由于super方法的特殊性,本节单独谈一谈super方法. 一.su ...

  9. PyQt(Python+Qt)学习随笔:QTableWidget表格部件中行高和列宽的计算方式

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTableWidget表格部件中行高和列宽的计算在Qt提供的资料中内容介绍比较泛,细节说得不清楚, ...

  10. PLSQL Developer 工具应用

    用户scott使用: 解锁scott: 第一步:登陆管理员 SQL语句:Sqlplus sys/tiger as sysdba 第二步:解锁scott SQL语句:Alter user scott a ...