Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在静默模式下执行Selenium Chrome WebDriver?_C#_Selenium_Webdriver_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

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

C# 如何在静默模式下执行Selenium Chrome WebDriver?,c#,selenium,webdriver,selenium-webdriver,selenium-chromedriver,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); 但是诊断输出不是禁止的。好问题,但是,我不知道你从

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

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

我不想看到这些消息,如何抑制它们

我这样做

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

但是诊断输出不是禁止的。

好问题,但是,我不知道你从哪里得到的
.AddArgument(“--silent”)东西,因为这是Chrome的命令行开关,而不是ChromeDriver。另外,没有一个Chrome开关叫做
——silent

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

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

ChromeOptions options = new ChromeOptions();

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

IWebDriver driver = new ChromeDriver(service, options);
编辑: ChromeDriver(不是Chrome)有一个命令行参数
--silent
,应该可以工作SuppressInitialDiagnosticInformation
正是这样做的。但是,它似乎只抑制了一些消息

这是一张封闭的chromedriver票: 我就是这么做的

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

对我来说,这是唯一有效的方法


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

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


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

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

这段代码对我来说很好:

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 { }
}

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

options=options()
options.headless=True
选项。添加_实验_选项(“ExcludeSwitchs”,[“enable logging”])

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

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


谢谢你的帮助。在您的代码中,端口9515上启动的ChromeDriver(v2.0)输出不显示。但出现类似于以下内容的输出:
[5468:8996:0404/150758:错误:textfield.h(156)]未实现
是否可以删除此输出?@PapyRef:这取决于ChromeDriver的设计方式。如果此消息也是诊断消息,则这是一个错误,请报告它。但是,如果这不是诊断消息,则您只能请求功能请求来抑制此消息。我不知道这是属于哪一个。它也可以在Selenium 3@YiZeng中实现吗?这很有魅力,但是为什么要使用options变量呢?我试着不用它,但效果很好。@KingMak:Selenium API从那时起就一直在变化。我猜在使用服务初始化
ChromeDriver
时需要
ChromeOptions
。天哪,终于,两年后,有人发布了如何修复这个本不应该是问题的愚蠢问题的帖子。非常感谢你。作为参考,ruby的等价物是
@browser=Watir::browser.new:chrome,开关:%w[--log level=3]
这个解决方案对我不起作用,尽管易曾的解决方案对我起作用了.OMG!这对我来说甚至在Debian 10中使用Python都是有效的。你如何使用Python做到这一点?这是正确的答案-HideCommand和PromptWindow说这一切回答了你的问题吗?
    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");
ChromeDriverService service = ChromeDriverService.CreateDefaultService(driverLocation);
service.SuppressInitialDiagnosticInformation = true;
service.HideCommandPromptWindow = true;
var driver = new ChromeDriver(service, options);
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 { }
}