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

如何在Python的Selenium WebDriver中禁止链接在新标签页打开

强制Selenium在当前标签页打开带target="_blank"的链接

嘿,我来帮你搞定这个问题!当页面里的链接都带target="_blank"属性时,Selenium点击后总会弹新标签页,确实有点麻烦。这里有几个实用的办法,能让这些链接乖乖在当前标签页打开:

方法1:用JavaScript移除所有链接的target属性

这种方法一劳永逸,直接修改页面上所有a标签的属性,移除target="_blank",之后再点击任何链接都会在当前页打开:

修改你的代码如下:

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

url = 'http://www.delhicourts.nic.in/DLCIS-2016-2.html'
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get(url)

# 执行JS移除所有a标签的target属性
driver.execute_script("""
    const links = document.querySelectorAll('a');
    links.forEach(link => {
        if (link.hasAttribute('target')) {
            link.removeAttribute('target');
        }
    });
""")

try:
    # 现在点击链接会在当前标签页打开
    wait.until(EC.presence_of_element_located((By.CLASS_NAME, "submit1"))).click()
except Exception as e:
    print(str(e))

方法2:直接获取链接地址并用driver.get()跳转

如果你只需要处理特定的链接,不用修改所有标签,可以先获取目标链接的href属性,然后直接用driver.get()跳转到该地址,这样也会在当前标签页打开:

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

url = 'http://www.delhicourts.nic.in/DLCIS-2016-2.html'
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get(url)

try:
    # 定位到目标元素,获取它的href属性
    target_link = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "submit1")))
    link_url = target_link.get_attribute('href')
    # 直接用driver.get跳转,在当前标签页打开
    driver.get(link_url)
except Exception as e:
    print(str(e))

这两种方法都能解决你的问题,方法1适合需要处理页面大量链接的场景,方法2更适合只处理单个特定链接的情况,你可以根据自己的需求选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:14:57