Python中selenium闪退或报错问题

文章介绍了在使用selenium时遇到的DeprecationWarning关于executable_path的警告以及浏览器闪退的问题。通过更新代码,引入Service对象并配合ChromeOptions设置,成功避免了警告并解决了浏览器启动后立即关闭的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因不清楚,看别的文章说是版本问题,版本变了方法也变了

改成如下就好了:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

path = 'chromedriver.exe'
option = webdriver.ChromeOptions()
option.add_experimental_option('detach', True)
s = Service(executable_path=path)
browser = webdriver.Chrome(service=s, options=option)

url = 'https://www.baidu.com'

browser.get(url)

 参考文章:

解决了报错:

解决 DeprecationWarning: Executable executable_path has been deprecated, please pass in a Service object in Selenium Python 问题 - 习久性成 - 博客园

解决了闪退:

selenium打开浏览器后闪退解决_蓝 风的博客-优快云博客_selenium打开浏览器闪退

### Python 中使用 Selenium 和 Requests 时程序闪退的解决方案 #### 1. 配置驱动管理器 如果遇到 `Unable to obtain driver using Selenium Manager` 的错误,可能是因为 Selenium WebDriver 者浏览器驱动未正确加载。可以通过手动指定驱动路径来解决问题[^1]。例如,在代码中显式设置 ChromeDriver 路径: ```python from selenium import webdriver options = webdriver.ChromeOptions() driver_path = r"C:\path\to\chromedriver.exe" driver = webdriver.Chrome(executable_path=driver_path, options=options) ``` 此外,也可以尝试升级 Selenium 版本到最新版本以支持内置的 Selenium Manager 功能。 --- #### 2. 环境依赖配置 确保 Python 及相关库已正确安装并配置环境变量。推荐按照以下步骤操作[^2]: - 使用 Python 3.7 更高版本。 - 安装必要的包:`pip install selenium requests`. - 如果存在模块冲突问题(如 `urllib3`),可降低其版本号以匹配兼容需求[^3]。 示例命令如下: ```bash pip install --upgrade pip pip install selenium==4.8.0 pip install requests pip install urllib3==1.26.9 ``` --- #### 3. 处理 Requests 模块中的异常 当使用 `requests` 库时发生崩溃,通常是由网络请求失败超时引起的。建议增加重试机制以及捕获异常处理逻辑。以下是改进后的代码片段: ```python import requests from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry session = requests.Session() retries = Retry(total=5, backoff_factor=0.1, status_forcelist=[500, 502, 503, 504]) adapter = HTTPAdapter(max_retries=retries) session.mount('http://', adapter) session.mount('https://', adapter) try: response = session.get("https://example.com", timeout=10) response.raise_for_status() # 抛出HTTP状态码错误 except (requests.exceptions.RequestException, Exception) as e: print(f"Request failed with error: {e}") ``` --- #### 4. 提升 Selenium 性能与稳定性 为了减少 Selenium 脚本运行期间可能出现的闪退情况,可以从以下几个方面入手[^4]: - **优化代码结构**: 尽量避免不必要的等待时间,改用动态等待替代固定延时。 ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) element = wait.until(EC.presence_of_element_located((By.ID, 'element_id'))) ``` - **启用无头模式(headless)**: 对于不需要图形界面的任务,开启 headless mode 可显著加快执行效率。 ```python options.add_argument("--headless") options.add_argument("--disable-gpu") ``` - **分布式部署多线程设计**: 当测试规模较大时,考虑采用多进程多线程方式分摊压力。 --- #### 5. 日志记录排查问题 通过日志工具定位具体原因有助于快速修复闪退现象。可以在启动 Selenium 前加入详细的调试信息输出功能: ```python logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) handler = logging.StreamHandler(sys.stdout) formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) ``` 同时注意查看控制台打印的日志内容是否存在明显的报错提示。 --- ### 结论 综上所述,针对 Python 中使用 Selenium 和 Requests 导致程序闪退的情况,应着重关注驱动适配、环境搭建、网络连接可靠性等方面,并采取相应措施加以改善。上述方法能够有效缓解此类问题的发生频率。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值