python网络爬虫selenium打开多窗口与切换页面的实现
作者:侯小啾 发布时间:2023-10-30 23:50:31
标签:python,selenium,多窗口,切换页面
关于python网络爬虫selenium打开多窗口与切换页面的方法代码测试与解析。
首先打开百度
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
以知乎为例,打开一个新的界面,使用 execute_script() 方法,执行JavaScript代码。
并调用driver的current_url属性,然后查看当前页面的url:
driver.execute_script("window.open('https://www.zhihu.com')")
print(driver.current_url)
当前页面依然还是百度。要想把当前页面换成知乎,还需要继续用代码切换过来。
打印 句柄 ,即driver的 window_handles 属性,输出结果如下:
print(driver.window_handles)
是一个有两个元素的列表,分别代表上边打开的两个网页,百度和知乎。
分别将其传入switch_to.window()方法中,再打印当前页面的url,输出结果如下,可以看到,页面成功被切换。
win1 = driver.window_handles[0]
driver.switch_to.window(win1)
print(driver.current_url)
time.sleep(2)
win2 = driver.window_handles[1]
driver.switch_to.window(win2)
print(driver.current_url)
关于句柄在列表中的顺序,
建议一般最好只额外打开一个网页,不建议打开更多的网页进行切换。当打开的网页数量超过两个时,句柄列表中的元素分别代表哪个网页,其顺序是不太好确定的。以下面代码为例,其顺序如下。
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 打开一个新的页面
driver.execute_script("window.open('https://www.zhihu.com')")
driver.execute_script("window.open('https://www.lagou.com/')")
driver.execute_script("window.open('https://www.jianshu.com/')")
win1 = driver.window_handles[0]
driver.switch_to.window(win1)
print(driver.current_url)
time.sleep(2)
win2 = driver.window_handles[1]
driver.switch_to.window(win2)
print(driver.current_url)
time.sleep(2)
win3 = driver.window_handles[2]
driver.switch_to.window(win3)
print(driver.current_url)
time.sleep(2)
win4 = driver.window_handles[3]
driver.switch_to.window(win4)
print(driver.current_url)
输出结果如图,句柄的第一个元素表示我们第一次打开的主网页界面,
然后我们依次打开了知乎、拉钩、简书,但是句柄列表第二三四个元素依次表示的是简书、拉钩、知乎。
可以认为其从第二个元素往后是与我们代码写入的顺序是相反的。
来源:https://blog.csdn.net/weixin_48964486/article/details/122700477
0
投稿
猜你喜欢
- isnull()Null 值指出变量不包含有效数据。Null 与 Empty 不同,后者指出变量未经初始化。Null 与零长度字符串 (&q
- 代码如下var http=require('http');var ejs=require('ejs');va
- python爬虫写起来非常快,虽然也可以用java,但是没有python来的简
- 使用场景公司内部使用Django作为后端服务框架的Web服务,当需要使用公司内部搭建的Ldap 或者 Windows 的AD服务器作为Web
- 在该网站下载你所需要的mysql依赖驱动版本,比如我的QT版本是5.15就下5.15版的 按照你的Qt编译版本和机器位数进行下载,
- 最近因为工作的需求,需要对mysql中数字进行格式化,但发现网上的资料较少,索性自己总结一下,方便自己也帮助有需要的朋友们,下面话不多说,来
- 在Thread和Process中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread
- 本文实例讲述了MSSQL分页存储过程。分享给大家供大家参考,具体如下:USE [DB_Common]GO/****** 对象: Stored
- 这是一个很和谐很实用的网站管理程序,和我以前介绍的服务器管理程序不同的是,这个程序只有一个功能,就是实现远程Web方式删除文件(实际上是重命
- 前言在Python中,装饰器是一种十分强大并且好用的语法,一些重复的代码使用装饰器语法的话能够使代码更容易理解及阅读。因此在这里简单总结了一
- mysql> select 'name',id from table_b; //'name' 不在ta
- 前言无论是单机锁还是分布式锁,原理都是基于共享的数据,判断当前操作的行为。对于单机则是共享RAM内存,对于集群则可以借助Redis,ZK,D
- 在PyCharm 里,显示行号有两种办法:1,临时设置。右键单击行号处,选择 Show Line Numbers。但是这种方法,只对一个文件
- 本文实例讲述了Python3模拟登录操作。分享给大家供大家参考,具体如下:模拟登录_要求:1. 用户输入账号密码进行登录2. 用户信息保存在
- 引言本篇文章所依赖的python环境是:如果你还没了解过什么是WSGI,建议先查询一下相关资料,或者查看上一篇文章:python|探寻WSG
- 本文实例为大家分享了python利用opencv实现颜色检测的具体代码,供大家参考,具体内容如下需要实现倒车辅助标记检测的功能,倒车辅助标记
- 使用celery在django项目中实现异步发送短信在项目的目录下创建celery_tasks用于保存celery异步任务。在celery_
- 我就废话不多说了,直接上代码了。非常简单哦!pytorch转成longtensorb = torch.rand(3,3)#得到的是float
- 0.前言Telnet协议属于TCP/IP协议族里的一种,对于我们这些网络攻城狮来说,再熟悉不过了,常用于远程登陆到网络设备进行操作,但是,它
- python __init__.py 和 __all__作用一、__init__.py1、导入文件夹包的时候,会运行写在该文件夹包下的__i