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()时关闭弹出的浏览器窗口?
用 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 启动前就禁掉。
233
谢谢。。我试下。
Google 已推出了 Headless Chromium 模式
https://url.openle.com/go#url=https://ask.congci.com/-/content/chrome-liulanqi-ruhe-zuo-zidonghua-ceshi
nice


