You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium在Opera浏览器中实现新标签页打开切换的代码如何编写?

Selenium + Opera 标签页切换实现方案

前置依赖

  • 推荐使用 Selenium 4.x 版本,可自动匹配对应Opera版本的驱动,无需手动下载配置
  • Selenium 3.x版本需要手动下载和本地Opera浏览器版本匹配的OperaDriver后再使用

完整实现代码

from selenium import webdriver
from selenium.webdriver.opera.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 配置Opera浏览器选项
opera_options = Options()
# 如需无头模式运行可去掉下方注释
# opera_options.add_argument('--headless=new')

# 初始化Opera驱动
driver = webdriver.Opera(options=opera_options)
# 设置全局隐式等待时长,可根据自身需求调整
driver.implicitly_wait(10)

# 保存初始标签页句柄,后续需要返回初始页时可直接调用
original_window = driver.current_window_handle

# 待爬取的目标链接列表,替换为你自己的链接即可
target_urls = [
    "https://example.com/1",
    "https://example.com/2",
    "https://example.com/3"
]

for url in target_urls:
    # 通过JS打开新标签页,比点击元素触发新标签的逻辑更稳定,避免特殊字符报错
    driver.execute_script("window.open(arguments[0]);", url)
    # 切换到最新打开的标签页:新标签页默认在句柄列表的最后一位
    driver.switch_to.window(driver.window_handles[-1])

    # ------------------ 下方编写你的元素检测、爬取逻辑 ------------------
    # 示例:等待指定ID的元素加载完成
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "target_element_id")))
    # 你的自定义逻辑
    # -------------------------------------------------------------------

    # 【可选】处理完当前标签页后关闭该标签,避免打开过多标签占用资源
    driver.close()
    # 切回初始标签页,准备打开下一个链接
    driver.switch_to.window(original_window)

# 所有链接处理完成后退出浏览器
driver.quit()

注意事项

  • 不要使用driver.get()打开新链接,该方法会直接在当前标签页加载目标地址,不会生成新标签
  • 如果需要保留所有标签页后续统一处理,去掉循环内的driver.close()和切回初始页的代码即可,后续可以通过driver.switch_to.window(driver.window_handles[索引])切换到对应标签页,索引从0开始计数,0为初始标签页,1为第一个打开的新标签,以此类推
  • 如果出现句柄获取异常,可在执行window.open后添加0.5秒左右的强制等待,确保标签页加载完成后再获取句柄
  • 上述逻辑同样适用于Chrome、Edge等Chromium内核浏览器,仅需修改对应驱动的初始化配置即可

内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:45:04