如何在静默模式下执行Selenium Chrome WebDriver?

时间:2013-09-09 16:13:22

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

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

  

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

我不想看到这些消息,我怎么能压制它们呢?

我这样做

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

但诊断输出不会被抑制。

8 个答案:

答案 0 :(得分:18)

我只是这样做

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

答案 1 :(得分:12)

好问题,但是,我不知道你在哪里得到.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正是这样做的。但是,它似乎只能抑制一些消息。

这是一张封闭的镀铬车票: Issue 116: How to disable the diagnostic messages and log file from Chrome Driver?

答案 2 :(得分:5)

对我来说唯一有用的东西

   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);

答案 3 :(得分:3)

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

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

答案 4 :(得分:2)

尝试此代码,它会隐藏浏览器“无头”参数但Chrome ver应该> 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 :(得分:1)

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

Selenium chromedriver disable logging or redirect it java

答案 6 :(得分:0)

此代码对我来说很好:

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 :(得分:0)

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

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

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