You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows10下Python+Selenium启动Chrome后自动关闭及网络错误求助

解决Selenium启动Chrome后自动关闭+日志报错的问题

嘿,我看你遇到了两个小问题:启动Chrome后页面加载完就自动关闭,还有控制台弹出的network_change_notifier_win报错。我来一步步帮你搞定:

一、浏览器自动关闭的原因及解决

你写的open_chrome函数里,driver局部变量——函数执行完毕后,Python会自动回收这个局部变量,对应的Chrome进程也就跟着终止了,浏览器自然就关了。

解决办法很简单:把driver从函数里返回,在主程序里保存这个引用,这样Python就不会轻易回收它,浏览器就能保持打开状态。如果需要手动关闭,还可以加个等待输入的逻辑。

二、抑制烦人的日志报错

那个WSALookupServiceBegin failed with:0的报错其实是Chrome在Windows上的一个常见警告,和网络状态检测有关,完全不影响自动化功能。如果你看着不舒服,可以通过ChromeOptions来屏蔽这些冗余日志。

修改后的完整代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 用原始字符串(加r)避免Windows路径的转义问题
chrome_path = r'D:\Xampp7\htdocs\python_automation\Gecko_Driver\chromedriver_win32\chromedriver.exe'
firfox_path = r'D:\Xampp7\htdocs\python_automation\Gecko_Driver\f_geckodriver-v0.26.0-win64\geckodriver.exe'
browser = "chrome"

def open_chrome():
    # 配置选项,屏蔽冗余日志
    chrome_options = Options()
    chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
    
    driver = webdriver.Chrome(executable_path=chrome_path, options=chrome_options)
    driver.maximize_window()
    driver.get('http://seleniumhq.org/')
    return driver  # 返回driver对象

def open_firefox():
    driver = webdriver.Firefox(executable_path=firfox_path)
    driver.get('http://seleniumhq.org/')
    return driver

if browser == "chrome":
    driver = open_chrome()
    # 可选:加这行让浏览器保持打开,直到你按回车
    # input("按回车键关闭浏览器...")
    # driver.quit()  # 手动关闭浏览器
elif browser == "firefox":
    driver = open_firefox()

额外小提示

  • Windows路径里的\要注意转义,要么用原始字符串(路径前加r),要么改成双反斜杠\\,不然可能会出现路径解析错误。
  • 如果用的是较新版本的Selenium(4.x+),其实可以不用指定executable_path,只要ChromeDriver在系统PATH里,或者用Service类来管理驱动,不过你的写法在旧版本里是没问题的。

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

火山引擎 最新活动