手动登录后如何使Chrome无头

时间:2018-11-14 08:53:48

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

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

我要连接到网站的硒代码。

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

2 个答案:

答案 0 :(得分:2)

,您将无法在手动登录后使Chrome自动无头运行。

使用 ChromeOptions 配置 ChromeDriver 的实例以跨越新的 Chrome浏览器会话时, ChromeDriver < / em>在 ChromeDriver 的整个生存期中保持不变,并且保持不可编辑。因此,您无法将任何其他 ChromeOptions 添加到当前正在执行的 WebDriver 实例中。

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

一种更干净的方法是在driver.quit()方法中调用 tearDown(){} 关闭销毁当前的< em> ChromeDriver Chrome浏览器实例,然后跨越一组新的 ChromeDriver Chrome浏览器实例以及一组新的配置。

  

您可以在How can I reconnect to the browser opened by webdriver with selenium?

中找到相关的讨论

答案 1 :(得分:0)

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

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

无头浏览器是模拟程序,不是您真正的浏览器。这些无头浏览器中的大多数已经发展到足以像真实浏览器一样近似模拟。仍然您不希望在无头浏览器中运行所有测试。在使用Headless浏览器之前,JavaScript是您需要非常小心的地方。不同的浏览器对JavaScript的实现方式有所不同。尽管JavaScript是一种标准,但是每种浏览器在实现JavaScript的方式上都有其自身的微小差异。在无头浏览器的情况下也是如此。例如,HtmlUnit无头浏览器使用Rihno JavaScript引擎,而其他任何浏览器都不会使用它。

这里是Article = https://developers.google.com/web/updates/2017/04/headless-chrome

检查一下!