代码之家  ›  专栏  ›  技术社区  ›  Rabih Kodeih

如何使用带有Python绑定的Selenium禁用日志记录

  •  16
  • Rabih Kodeih  · 技术社区  · 12 年前

    简单的问题:如何在使用来自Python绑定的Selenium时完全禁用日志记录,ex代码如下:

    browser = webdriver.Chrome()
    

    我试过这样的事情:

    options = webdriver.ChromeOptions();
    options.add_argument('--log-level 3') 
    browser = webdriver.Chrome(chrome_options=options)
    

    或者甚至:

    options = webdriver.ChromeOptions();
    options.add_argument('--disable-logging') 
    browser = webdriver.Chrome(chrome_options=options)
    

    但文件chromedriver.log仍然出现在每次新运行的测试中。

    8 回复  |  直到 6 年前
        1
  •  20
  •   Mirko Daga Acevedo architux    2 年前

    您可以设置 options.add_argument("--log-level=3") 让Chrome浏览器与Selenuim一起运行,或者您可以通过以下方式将日志记录级别设置为更高级别:

    import logging
    logger = logging.getLogger('selenium.webdriver.remote.remote_connection')
    logger.setLevel(logging.WARNING)  # or any variant from ERROR, CRITICAL or NOTSET
    

    但在这种情况下,无论如何都会出现一些消息,包括启动DevTools消息或SSL握手错误消息。

    在控制台中使用Selenium运行Chrome浏览器 完全静音模式 ,您应该使用以下代码段:

    options = Options()
    options.headless = True
    options.add_experimental_option("excludeSwitches", ["enable-logging"])
    

    这个技巧将抑制来自Selenium驱动程序或浏览器本身的任何控制台消息,包括第一条消息 DevTools listening on ws://127.0.0.1 一开始。

    同时,一些运行时逐步数据可以保存到 服务日志文件 ,以防添加了其参数。

        2
  •  12
  •   TONy.W    11 年前
    driver = webdriver.Chrome(service_log_path='/dev/null')
    
        3
  •  8
  •   Y__    11 年前

    这个 source code Chrome的网络驱动程序,显示了一个名为 service_log_path

    因此,如果您想删除该文件,可以将此属性设置为

    • /dev/null 如果您在Linux/Unix下运行;
    • NUL 窗户下面

    希望有帮助

        4
  •  7
  •   shtef    6 年前

    仅适用于Windows用户:

    webdriver.Firefox(log_path='NUL')
    

    公认的答案是正确的,但若你们像我一样是Python/windows的新手,这样的例子会让你们在谷歌上节省几个小时的时间。

        5
  •  5
  •   undetected Selenium    2 年前

    使用禁用日志记录 蟒蛇 您需要通过的实例添加一个实验选项 ChromeOptions() 如下所示:

    add_experimental_option('excludeSwitches', ['enable-logging'])
    

    实施

    兼容代码

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.chrome.service import Service
    
    options = Options()
    options.add_experimental_option('excludeSwitches', ['enable-logging'])
    s = Service('C:\\BrowserDrivers\\chromedriver.exe')
    driver = webdriver.Chrome(service=s, options=options)
    
        6
  •  2
  •   pahval rehljkov    3 年前

    这对我很有效:

    chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
    

    提供人:

    https://joshuatz.com/posts/2020/selenium-webdriver-disabling-chrome-logging-messages/

        7
  •  1
  •   grantr    3 年前

    如果您将service_log_path设置为None,它将不会生成geccodriver.log文件:

    driver = webdriver.Firefox(options=options, service_log_path=None)
    
        8
  •  1
  •   Anglefroghammer    3 年前

    我知道这已经很老了,但这仍然是当你寻找一种方法来防止硒日志记录时出现的第一件事,它并没有为我消除“dev listing”消息,我找到了一种方法:

    ChromeDriverService service = ChromeDriverService.CreateDefaultService();
    service.HideCommandPromptWindow = true;
    IWebDriver driver = new ChromeDriver(service,options);