C# 手动登录后如何使Chrome无头

C# 手动登录后如何使Chrome无头,c#,selenium,selenium-webdriver,webdriver,selenium-chromedriver,C#,Selenium,Selenium Webdriver,Webdriver,Selenium Chromedriver,我正在测试我的网站。 手动输入登录凭据后,我希望chrome浏览器无头 我的selenium代码用于连接到网站 var driverService = ChromeDriverService.CreateDefaultService(); ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.AddArgument("--start-maximized"); chromeOptions.

我正在测试我的网站。 手动输入登录凭据后,我希望chrome浏览器无头

我的selenium代码用于连接到网站

    var driverService = ChromeDriverService.CreateDefaultService(); 
    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.AddArgument("--start-maximized");
    chromeOptions.AddArgument("no-sandbox");
    //chromeOptions.AddArgument("--headless");

    driver.Navigate().GoToUrl("exampleDOTcom");

    while (true)
    {
        Console.WriteLine("Login and Press Enter");
        Console.ReadLine();
        if (CheckLoggedIn())
            break;
    }
    //driver = new ChromeDriver(driverService, chromeOptions, 
    TimeSpan.FromSeconds(180));
    chromeOptions.AddArgument("--headless");

,手动登录后将无法使Chrome无头运行

使用
ChromeOptions()或
DesiredCapabilities()配置ChromeDriver实例时
在启动新的Chrome浏览会话的过程中,配置将烘焙到chromedriver可执行文件中,并将持续到WebDriver的生命周期,并且不可编辑。因此,您无法向当前正在执行的WebDriver实例添加任何其他ChromeOptions

即使您能够从已启动的ChromeDriver和Chrome浏览会话中提取ChromeDriver和Chrome会话属性,例如会话ID
CookiesUserAgent和其他会话属性,您仍然无法更改ChromeDriver的属性集

一种更简洁的方法是在
tearDown(){}
方法中调用
driver.quit(),以关闭优雅地销毁当前的ChromeDriver和Chrome Browser实例,然后使用新的配置集跨越一组新的ChromeDriver和Chrome Browser实例


tl;博士 您可以在以下内容中找到一些相关讨论:


,手动登录后将无法使Chrome无头运行

使用
ChromeOptions()或
DesiredCapabilities()配置ChromeDriver实例时
在启动新的Chrome浏览会话的过程中,配置将烘焙到chromedriver可执行文件中,并将持续到WebDriver的生命周期,并且不可编辑。因此,您无法向当前正在执行的WebDriver实例添加任何其他ChromeOptions

即使您能够从已启动的ChromeDriver和Chrome浏览会话中提取ChromeDriver和Chrome会话属性,例如会话ID
CookiesUserAgent和其他会话属性,您仍然无法更改ChromeDriver的属性集

一种更简洁的方法是在
tearDown(){}
方法中调用
driver.quit(),以关闭优雅地销毁当前的ChromeDriver和Chrome Browser实例,然后使用新的配置集跨越一组新的ChromeDriver和Chrome Browser实例


tl;博士 您可以在以下内容中找到一些相关讨论:


如果您需要无头浏览器,请在浏览器打开前指定。我还没有看到任何应用程序进行这种活动

使用无头浏览器前应注意的事项

无头浏览器是模拟程序,它们不是真正的浏览器。这些无头浏览器中的大多数已经发展到足以模拟真实浏览器的程度,非常接近。您仍然不希望在无头浏览器中运行所有测试。JavaScript是在使用无头浏览器之前需要非常小心的一个领域。JavaScript由不同的浏览器实现。虽然JavaScript是一种标准,但每个浏览器在实现JavaScript的方式上都有自己的小差异。对于无头浏览器也是如此。例如,HtmlUnit headless浏览器使用Rihno JavaScript引擎,其他任何浏览器都不使用该引擎

这是文章=


看看

如果您需要无头浏览器,请在浏览器打开前指定。我还没有看到任何应用程序进行这种活动

使用无头浏览器前应注意的事项

无头浏览器是模拟程序,它们不是真正的浏览器。这些无头浏览器中的大多数已经发展到足以模拟真实浏览器的程度,非常接近。您仍然不希望在无头浏览器中运行所有测试。JavaScript是在使用无头浏览器之前需要非常小心的一个领域。JavaScript由不同的浏览器实现。虽然JavaScript是一种标准,但每个浏览器在实现JavaScript的方式上都有自己的小差异。对于无头浏览器也是如此。例如,HtmlUnit headless浏览器使用Rihno JavaScript引擎,其他任何浏览器都不使用该引擎

这是文章=


看看

您在哪里为驾驶员提供选项?什么是
驱动程序
定义为?你不能,你需要在启动驱动程序之前设置headless选项。@fredrik这是可以做到的,我见过一些应用程序这样做,但我从来没有说过这是不可能做到的-但是你的代码不会编译,因为存在不一致。您也不会在显示的代码中为驱动程序提供选项。因此,没有任何选项将被传递给司机…@sham,你不能将选项传递给司机吗?什么是
驱动程序
定义为?你不能,你需要在启动驱动程序之前设置headless选项。@fredrik这是可以做到的,我见过一些应用程序这样做,但我从来没有说过这是不可能做到的-但是你的代码不会编译,因为存在不一致。您也不会在显示的代码中为驱动程序提供选项。因此,没有任何选项会传递给驱动程序…@sham,你不能“无头Chrome是Chrome的完整实例。无头Chrome是C的完整实例