Python中如何在使用Selenium的webdriver.Chrome()时关闭弹出的浏览器窗口?

close 和 quit 都只能在 get 完才能使用

有什么方法可以隐藏 chrome 的窗口呢?


from selenium import webdriver

driver = webdriver.Chrome()

driver.get(‘http://www.domain.com/play/145804.html’)

for i in driver.find_elements_by_id(‘jp_audio_0’):

print("Value is: %s" % i.get_attribute("src"))

driver.close()

driver.quit()


Python中如何在使用Selenium的webdriver.Chrome()时关闭弹出的浏览器窗口?

7 回复

webdriver.Chrome() 启动浏览器后,弹出的窗口主要有两种:一种是浏览器自身的新窗口/标签页,另一种是浏览器的“通知”、“保存密码”这类弹窗。处理方式不同。

1. 关闭新打开的浏览器窗口或标签页: 如果你的操作(比如点击一个链接)打开了一个新窗口,你需要先切换到新窗口,然后关闭它,最后切换回原来的窗口。

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("你的网址")

# 假设点击某个链接会打开新窗口
original_window = driver.current_window_handle # 获取当前窗口句柄
driver.find_element(By.LINK_TEXT, "点击我").click() # 触发打开新窗口

# 等待新窗口出现并获取所有窗口句柄
WebDriverWait(driver, 10).until(lambda d: len(d.window_handles) > 1)
all_windows = driver.window_handles

# 切换到新窗口
for window in all_windows:
    if window != original_window:
        driver.switch_to.window(window)
        break

# 现在在新窗口,可以关闭它
driver.close()

# 切换回原始窗口继续操作
driver.switch_to.window(original_window)

2. 关闭浏览器的“通知”、“保存密码”等弹窗: 这类弹窗不是HTML页面,而是浏览器的原生UI。最佳实践是在启动浏览器时通过 ChromeOptions 添加参数来禁用它们。

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()

# 禁用所有可能弹出的通知
prefs = {
    "profile.default_content_setting_values.notifications": 2,
    "credentials_enable_service": False, # 禁用保存密码提示
    "profile.password_manager_enabled": False # 禁用密码管理器
}
chrome_options.add_experimental_option("prefs", prefs)

# 也可以添加这些常用参数来避免其他干扰
chrome_options.add_argument("--disable-infobars") # 禁用“Chrome正在受到自动软件控制”信息栏
chrome_options.add_argument("--disable-extensions")

driver = webdriver.Chrome(options=chrome_options)
driver.get("你的网址")
# 此时启动的浏览器就不会有那些烦人的弹窗了

总结: 新窗口用 driver.close()switch_to.window 配合操作,浏览器弹窗用 ChromeOptions 启动前就禁掉。

谢谢。。我试下。

不尝试下无头浏览器吗……

回到顶部