C# ChromeDriver无头模式未加载Cookie

C# ChromeDriver无头模式未加载Cookie,c#,selenium,selenium-webdriver,automated-tests,selenium-chromedriver,C#,Selenium,Selenium Webdriver,Automated Tests,Selenium Chromedriver,Chrome版本89。操作系统:Windows10。编程语言:c#.net core 3.1 在Headed模式下运行时,我登录了一个站点,并且站点cookie设置正确。在随后的运行中,不需要登录,这很好 但一旦我切换到无头模式,浏览器就需要再次输入凭据。我可以提供凭据,但该网站还需要发送到我手机上的多因素身份验证码。即使我在headless模式下输入了auth代码,并在登录时选中“no auth code for this device”,在接下来的运行中仍然需要auth代码 在我看来,无头模

Chrome版本89。操作系统:Windows10。编程语言:c#.net core 3.1

在Headed模式下运行时,我登录了一个站点,并且站点cookie设置正确。在随后的运行中,不需要登录,这很好

但一旦我切换到无头模式,浏览器就需要再次输入凭据。我可以提供凭据,但该网站还需要发送到我手机上的多因素身份验证码。即使我在headless模式下输入了auth代码,并在登录时选中“no auth code for this device”,在接下来的运行中仍然需要auth代码

在我看来,无头模式下的站点cookie没有正确加载/保存

我想知道是什么导致了头部模式和无头模式之间的差异。两种模式都访问相同的chrome配置文件

任何帮助都将不胜感激

            var chromeoptions = new ChromeOptions();
        chromeoptions.AddArguments("--disable-notifications");
        
        chromeoptions.AddArguments("--no-sandbox");

        chromeoptions.AddArguments("--disable-dev-shm-usage");
        chromeoptions.UnhandledPromptBehavior = UnhandledPromptBehavior.Dismiss;
        chromeoptions.AddArguments("user-data-dir=" + chromeProfileDir);

        if (!string.IsNullOrEmpty(sHeadless) && sHeadless == "true")
        {
            chromeoptions.AddArguments("--headless");
            chromeoptions.AddArguments("--remote-debugging-port=9222");

        }

        chromeoptions.AddArguments("user-agent=\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36\"");

        chromeoptions.AddArguments("--blink-settings=imagesEnabled=false");

        var chromeDriverService = ChromeDriverService.CreateDefaultService(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
        chromeDriverService.HideCommandPromptWindow = true;

        ChromeDriver browser = null;
        int nCount = 0;
        while (browser == null && nCount < 3)
        {
            try
            {
                browser = new ChromeDriver(chromeDriverService, chromeoptions, TimeSpan.FromSeconds(180));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error initializing chrome browser: " + ex.Message);
                
            }
            nCount++;
        }

        return browser;
var chromeoptions=新的chromeoptions();
AddArguments(“--禁用通知”);
AddArguments(“--no sandbox”);
AddArguments(“--disable dev shm usage”);
chromeoptions.UnhandledPromptBehavior=UnhandledPromptBehavior.Disclose;
AddArguments(“用户数据目录=”+chromeProfileDir);
如果(!string.IsNullOrEmpty(sHeadless)&&sHeadless==“true”)
{
chromeoptions.AddArguments(“--headless”);
AddArguments(“--远程调试端口=9222”);
}
AddArguments(“用户代理=\”Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/88.0.4324.190 Safari/537.36\”;
AddArguments(“--blink settings=imagesEnabled=false”);
var chromeDriverService=chromeDriverService.CreateDefaultService(Path.GetDirectoryName(Assembly.getExecutionGassembly().Location));
chromedDriverService.hideCommand和PromptWindow=true;
ChromeDriver浏览器=空;
int nCount=0;
while(浏览器==null&&n计数<3)
{
尝试
{
浏览器=新的ChromeDriver(ChromeDriver服务,chromeoptions,TimeSpan.FromSeconds(180));
}
捕获(例外情况除外)
{
Console.WriteLine(“初始化chrome浏览器时出错:+ex.Message”);
}
nCount++;
}
返回浏览器;