Python—selenium实现以一个浏览器多个标签页打开多个网页

本文分享了使用Selenium WebDriver实现浏览器多标签页操作的方法,包括打开新标签页、在不同标签页间切换及登录验证等步骤。
部署运行你感兴趣的模型镜像

如何用selenium打开新的标签页?网上都说是实现输入Ctrl+t即可,但测试完全不可行。经过反复摸索,终于发现了打开新的标签页的可靠办法,由此实现以一个浏览器打开多个标签页,代码分享给大家。

from selenium import webdriver
js="window.open('{}','_blank');"
#第一个网站
driver=webdriver.Chrome()
driver.get('http://web1.com')
driver.find_element_by_id('username').send_keys('user1')
driver.find_element_by_id('password').send_keys('pass1')
driver.find_element_by_tag_name('form').submit()  	#表单提交
#第二个网站
driver.execute_script(js.format('http://web2.com'))
driver.switch_to.window(driver.window_handles[-1])    #切换到最新页面
driver.find_element_by_id('userid').send_keys('user2')
driver.find_element_by_id('pwd').send_keys('pass2')
driver.find_element_by_id('Submit').click()		#点击按钮
#第三个网站 
driver.execute_script(js.format('http://wweb3.com')
driver.switch_to.window(driver.window_handles[-1])    #切换到最新页面
if 'login' in driver.current_url:		#默认打开页面后会自动跳转到登录页
  driver.find_element_by_id('_umname').send_keys('user3')
  driver.find_element_by_id('pwd').send_keys('pass3')
  driver.find_element_by_id('submit').click()

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think> 我们已经有多个引用来源,说明打开标签页的可靠方法是使用JavaScript的window.open方法,并通过window_handles切换窗口。 根据引用[1]和[2],使用driver.execute_script("window.open('新的URL');")来打开标签页,然后通过driver.switch_to.window(driver.window_handles[-1])切换到最新打开标签页。 引用[3]提供了两种切换标签页的方法:按照打开顺序(通过索引)和按照标题(通过判断标题是否包含特定字符串)。 因此,我们可以总结如下步骤: 1. 使用driver.get()打开一个页面。 2. 使用driver.execute_script("window.open('新的URL');")打开后续的标签页。 3. 切换到新标签页:driver.switch_to.window(driver.window_handles[index]),其中index可以是新标签页的索引(按打开顺序,0是第一个,-1是最后一个)。 4. 或者通过循环判断标题来切换到指定标签页。 注意:打开多个标签页后,需要正确切换才能操作不同的页面。 由于用户的问题是“如何打开多个标签页”,我们重点介绍打开和切换的方法。 另外,需要提醒用户,在打开多个标签页后,要记得在操作完成后关闭标签页浏览器,避免资源占用。 </think> 在Python中使用Selenium打开多个标签页的可靠方法是执行JavaScript的`window.open()`方法,然后切换窗口句柄。以下是具体实现步骤: ### 1. 基本方法:使用JavaScript打开标签页 ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("https://example.com") # 打开一个标签页 # 打开标签页(方法1) js_new_tab = "window.open('https://example2.com');" driver.execute_script(js_new_tab) # 打开标签页(方法2 - 带格式化) js_template = "window.open('{}', '_blank');" new_url = "https://example3.com" driver.execute_script(js_template.format(new_url)) ``` ### 2. 切换标签页的方法 ```python # 获取所有窗口句柄(按打开顺序存储) handles = driver.window_handles # 例如: [handle1, handle2, handle3] # 切换到最新标签页 driver.switch_to.window(handles[-1]) # 切换到特定顺序的标签页 driver.switch_to.window(handles[0]) # 切换到第一个标签页 # 按标题切换标签页 target_title = "目标页面标题" for handle in handles: driver.switch_to.window(handle) if target_title in driver.title: break ``` ### 3. 完整工作流程示例 ```python # 初始化浏览器 driver = webdriver.Chrome() # 第一个标签页 driver.get("https://login1.com") driver.find_element("id", "username").send_keys("user1") driver.find_element("id", "password").send_keys("pass1") # 打开第二个标签页 driver.execute_script("window.open('https://login2.com');") driver.switch_to.window(driver.window_handles[-1]) # 切换到新标签页 driver.find_element("id", "email").send_keys("user2@example.com") # 打开第三个标签页 driver.execute_script("window.open('https://login3.com');") driver.switch_to.window(driver.window_handles[-1]) driver.find_element("name", "user").send_keys("user3") ``` ### 注意事项 1. `window_handles`列表按打开顺序存储句柄,索引0对应第一个标签页 2. 每次打开标签页后必须使用`switch_to.window()`切换焦点 3. 标签页操作完成后建议关闭不再需要的标签页: ```python driver.switch_to.window(handles[1]) driver.close() # 关闭当前标签页 driver.switch_to.window(handles[0]) # 切回主标签页 ``` 4. 使用`driver.title`检查当前页面标题确保切换正确[^3] 5. 避免使用键盘快捷键方法(如Ctrl+T),不同浏览器兼容性差[^1][^2] 此方法已在Chrome、Firefox等主流浏览器验证有效,可稳定实现标签页操作[^1][^2][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值