【问题标题】:How to execute Selenium Chrome WebDriver in silent mode?如何在静默模式下执行 Selenium Chrome WebDriver?
【发布时间】:2013-09-13 04:42:06
【问题描述】:

使用 Chrome Selenium WebDriver 时,服务器启动时会输出诊断输出:

在端口 9515 上启动 ChromeDriver (v2.0)

我不想看到这些消息,我该如何隐藏它们?

我这样做

ChromeOptions options = new ChromeOptions();
options.AddArgument("--silent");
IWebDriver Driver = new ChromeDriver(options);

但诊断输出没有被抑制。

【问题讨论】:

标签: c# selenium webdriver selenium-webdriver selenium-chromedriver


【解决方案1】:

好问题,但是,我不知道你从哪里得到 .AddArgument("--silent"); 的东西,因为那是 Chrome 的命令行开关,而不是 ChromeDriver。此外,无论如何也没有名为--silent 的 Chrome 开关。

OpenQA.Selenium.Chrome 命名空间下,有一个名为ChromeDriverService 的类,它的属性SuppressInitialDiagnosticInformation 默认为false。基本上你可能想要做的是创建 ChromeDriverService 并将其传递给 ChromeDriver 的构造函数。请参考文档here

这是抑制 ChromeDriver 诊断输出的 C# 代码。

ChromeOptions options = new ChromeOptions();

ChromeDriverService service = ChromeDriverService.CreateDefaultService();
service.SuppressInitialDiagnosticInformation = true;

IWebDriver driver = new ChromeDriver(service, options);

编辑: ChromeDriver(不是 Chrome)有一个命令行参数--silent,它应该可以工作。 .NET 绑定中的SuppressInitialDiagnosticInformation 正是这样做的。但是,它似乎只压制了一些消息。

这是一个封闭的 chromedriver 票: Issue 116: How to disable the diagnostic messages and log file from Chrome Driver?

【讨论】:

  • 感谢四位的帮助。使用您的代码,端口 9515 上的输出 Started ChromeDriver (v2.0) 不会显示。但是会出现类似下面的输出:[5468:8996:0404/150758:ERROR:textfield.h(156)] NOT IMPLEMENTED Is it possible to remove this output?
  • @PapyRef:这取决于 ChromeDriver 的设计方式。如果此消息也是诊断消息,那么这是一个错误,请报告它。但是,如果这不是诊断消息,那么您也只能请求功能请求来禁止此消息。我不知道这是属于哪个的。
  • 在 Selenium 3 @YiZeng 中也可以实现吗?
  • 这就像一个魅力,但是你为什么使用选项变量?我试过没有它,它工作正常。
  • @KingMak:从那时起,Selenium API 早就发生了变化。我猜想ChromeOptions 在使用服务初始化ChromeDriver 时是必需的。
【解决方案2】:

我只是这样做

ChromeOptions options = new ChromeOptions();
options.AddArgument("--log-level=3");
IWebDriver driver = new ChromeDriver(options);

【讨论】:

  • 天哪,终于,两年后,有人真正发布了如何解决这个不应该成为问题的愚蠢问题。非常感谢。作为参考,它的红宝石等价物是@browser = Watir::Browser.new :chrome , switches: %w[--log-level=3]
  • 这个解决方案对我不起作用,虽然易曾的解决方案对我有用。
  • OMG! 即使在 Debian 10 中使用 Python,这也适用于我。
  • 你如何用 Python 做到这一点?
  • @Menachem chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--log-level=3') driver = webdriver.Chrome('C:\webdriver\chromedriver.exe',chrome_options= chrome_options)
【解决方案3】:

对我来说唯一有用的东西

   selenium-chrome-driver-2.48.2.jar
   chromedriver 2.20
   selenium-java-2.48.2.jar

曾经

   ChromeOptions options = new ChromeOptions();
   System.setProperty("webdriver.chrome.args", "--disable-logging");
   System.setProperty("webdriver.chrome.silentOutput", "true");
   driver = new ChromeDriver(options);

【讨论】:

    【解决方案4】:

    试试这段代码,它会隐藏带有“headless”参数的浏览器,但 Chrome 版本应该 > 58

    (甚至可以隐藏命令提示符窗口)

        IWebDriver driver;
    ChromeOptions options = new ChromeOptions();
    options.AddArguments("--disable-extensions");
    options.AddArgument("test-type");
    options.AddArgument("--ignore-certificate-errors");
    options.AddArgument("no-sandbox");
    options.AddArgument("--headless");//hide browser
    
    ChromeDriverService service = ChromeDriverService.CreateDefaultService(@"chromedriverExepath\");
    service.SuppressInitialDiagnosticInformation = true;
    //service.HideCommandPromptWindow = true;//even we can hide command prompt window (with un comment this line)  
    options.BinaryLocation = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
    driver = new ChromeDriver(service, options);
    
    driver.Manage().Window.Maximize();
    driver.Navigate().GoToUrl("https://www.example.com");
    

    【讨论】:

      【解决方案5】:

      对我来说,以前的任何一个答案都没有帮助,我的解决方案是:

      ChromeDriverService service = ChromeDriverService.CreateDefaultService(driverLocation);
      service.SuppressInitialDiagnosticInformation = true;
      service.HideCommandPromptWindow = true;
      var driver = new ChromeDriver(service, options);
      

      【讨论】:

      • 这是正确答案 - HideCommandPromptWindow 说明了一切
      【解决方案6】:

      这段代码对我来说很好用:

      public static IWebDriver Driver { set; get; }
      -----
      Driver = CreateBrowserDriver();
      
      ////////////// Create Driver
      private static IWebDriver CreateBrowserDriver()
      {
          try
          {
              var options = new OpenQA.Selenium.Chrome.ChromeOptions();
              options.AddArguments("--disable-extensions");
              options.AddArgument("--headless"); // HIDE Chrome Browser
              var service = OpenQA.Selenium.Chrome.ChromeDriverService.CreateDefaultService();
              service.HideCommandPromptWindow = true; // HIDE Chrome Driver
              service.SuppressInitialDiagnosticInformation = true;
      
              return new OpenQA.Selenium.Chrome.ChromeDriver(service, options);
          }
          catch
          {
              throw new Exception("Please install Google Chrome.");
          }
      }
      ////////////// Exit Driver
      public static void ExitDriver()
      {
          if (Driver != null)
          {
              Driver.Quit();
          }
      
          Driver = null;
      
          try
          {
              // Chrome
              System.Diagnostics.Process.GetProcessesByName("chromedriver").ToList().ForEach(px => px.Kill());
          }
          catch { }
      }
      

      【讨论】:

        【解决方案7】:

        要在控制台中以完全静默模式运行带有 Selenium 的 Chrome 浏览器,您应该使用这个 sn-p:

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

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

        【讨论】:

          【解决方案8】:

          对于任何在这里发现自己想要 Java 解决方案的人,这里有一个线程:

          Selenium chromedriver disable logging or redirect it java

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-05-25
            • 1970-01-01
            • 2018-01-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多