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

如何在Python中阻止Selenium在终端打印日志?

解决Selenium Edge驱动终端打印错误日志的问题

你之前修改--log-level没效果,是因为EdgeDriver的日志输出不全由浏览器选项控制,得结合驱动服务配置和Python日志调整来解决。下面是具体的解决办法:

方法1:配置EdgeOptions将日志导向文件

给EdgeOptions添加日志级别和日志文件参数,把日志写到文件里,终端就不会输出了。另外注意原代码里创建驱动时没传入配置好的options,这也是之前设置无效的关键原因:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from msedge.selenium_tools import EdgeOptions
import requests

options = EdgeOptions()
options.add_argument("headless")
options.add_argument("disable-gpu")
# 设置日志级别为ERROR(3),并指定日志文件路径
options.add_argument("--log-level=3")
options.add_argument("--log-path=edge_driver.log")

# 务必把配置好的options传给driver
driver = webdriver.Edge("msedgedriver.exe", options=options)
driver.get("https://example.com/")

class App():
    def __init__(self, username="username_here", password="password_here"):
        self.username = username
        self.password = password

    @staticmethod  # 原方法无self参数,需添加静态方法装饰器避免报错
    def logIn():
        app = App()

        userField = driver.find_element(By.XPATH, "//input[@id='Username']")
        userField.send_keys(app.username)

        passField = driver.find_element(By.XPATH, "//input[@id='Password']")
        passField.send_keys(app.password)

        logInBtn = driver.find_element(By.XPATH, "//button[normalize-space()='Connexion']")
        logInBtn.click()

    @staticmethod
    def getEvents():
        eventTitles = driver.find_element(By.XPATH, "//div[@class='fc-content-skeleton']").text.splitlines()
        eventDataIDSElement = driver.find_elements(By.TAG_NAME, "a")
        eventDataIDS = [eventDataIDElement.get_attribute("data-id") for eventDataIDElement in eventDataIDSElement if eventDataIDElement.get_attribute("data-id") != None]
        

if __name__ == "__main__":
    App.logIn()
    App.getEvents()
    print("tasks done.")
    driver.quit()  # 任务完成后记得关闭驱动

方法2:用Service类控制驱动日志(Selenium 4+适用)

如果你的Selenium版本是4及以上,可以用EdgeService直接禁用驱动日志输出:

from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from msedge.selenium_tools import EdgeOptions
import requests

options = EdgeOptions()
options.add_argument("headless")
options.add_argument("disable-gpu")

# Windows用NUL,Linux/macOS用/dev/null,将日志导向空设备
service = EdgeService(executable_path="msedgedriver.exe", log_path='NUL')
driver = webdriver.Edge(service=service, options=options)
driver.get("https://example.com/")

# 后续类和方法同上...

方法3:调整Python全局日志级别

如果还有Python层面的selenium日志输出,可以直接把相关日志级别调高,只保留警告及以上信息:

import logging
# 把selenium相关模块的日志级别设为WARNING
logging.getLogger('selenium').setLevel(logging.WARNING)
logging.getLogger('msedge.selenium_tools').setLevel(logging.WARNING)

把这段代码放在文件最开头即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:05:24