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

使用Selenium+Python在Firefox中点击新标签页链接后无法聚焦求助

解决Selenium 3.x中切换到新标签页的问题

嘿,这个问题我之前踩过坑!核心原因很简单:Selenium的driver实例默认会停留在原来的标签页,哪怕你通过脚本点击打开了新标签页,它也不会自动切换过去,所以你拿到的driver.title还是原页面的内容。下面给你几个实用的解决方案:

方法一:直接切换到最新打开的标签页

新标签页的句柄会被添加到window_handles列表的末尾,所以我们可以直接获取列表最后一个元素来切换:

# 先执行你的点击操作
element = driver.find_element_by_xpath("html/body/footer/div/div[1]/section/div/div/div[2]/div[1]/ul/li[9]/div/div/a")
driver.execute_script("arguments[0].click();", element)

# 获取所有窗口句柄,切换到最后一个(新标签页)
all_window_handles = driver.window_handles
driver.switch_to.window(all_window_handles[-1])

# 现在就能拿到新标签页的标题了
print(driver.title)

方法二:通过原窗口句柄定位新标签页

如果你的场景里可能存在多个标签页,担心[-1]不够准确,可以先记录原窗口的句柄,再遍历找到新的那个:

# 记录原窗口的句柄
original_handle = driver.current_window_handle

# 执行点击操作
element = driver.find_element_by_xpath("html/body/footer/div/div[1]/section/div/div/div[2]/div[1]/ul/li[9]/div/div/a")
driver.execute_script("arguments[0].click();", element)

# 遍历所有句柄,切换到非原窗口的那个
for handle in driver.window_handles:
    if handle != original_handle:
        driver.switch_to.window(handle)
        break

# 验证新标签页标题
print(driver.title)

额外提示:等待页面加载完成

有时候新标签页加载需要时间,直接获取标题可能会拿到空或者错误内容,建议配合WebDriverWait做显式等待:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 切换到新标签页后,等待标题包含预期关键词(比如你知道新页面标题里有某个词)
WebDriverWait(driver, 10).until(EC.title_contains("目标页面关键词"))

# 再获取标题或操作元素
print(driver.title)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:08:58