如何在不丢失Cookie的情况下刷新我的Selenium ChromeDriver实例?

时间:2016-02-02 14:12:42

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

在我尝试使用C#在Selenium中自动化的手动测试用例中,它说:"使用复选框登录'记住我'激活,关闭浏览器,打开浏览器,检查用户是否仍然登录。"

手动执行,这当然是成功的。使用Chrome中的Selenium,我总是会在会话中丢失Cookie。

到目前为止我尝试了什么:

public static void RefreshDriver(TestParams testParams)
{
    var cookies = testParams.Target.Driver.Manage().Cookies.AllCookies;
    var url = new Uri(testParams.Target.Driver.Url);

    testParams.Target.Driver.Quit();
    testParams.Target = testParams.Target.Clone(); // creates new ChromeDriver()

    string temp = url.GetLeftPart(UriPartial.Authority);
    testParams.Target.Driver.Navigate().GoToUrl(temp);
    foreach (Cookie cookie in cookies)
    {
        testParams.Target.Driver.Manage().Cookies.AddCookie(cookie);
    }
    testParams.Target.Driver.Navigate().GoToUrl(url);
}

这就是我创建ChromeDriver的方式:

private ChromeDriver _CreateChromeDriver(string httpProxy)
{
    var options = new ChromeOptions();

    string tempDir = @"C:\Users\Kimmy\Documents\MyUserDataDir";

    options.AddArgument("user-data-dir=" + tempDir);
    if (!string.IsNullOrEmpty(httpProxy))
    {
        options.Proxy = new Proxy {HttpProxy = httpProxy};
    }

    return new ChromeDriver(options);
}

当我执行测试用例并使用RefreshDriver()到达部件时,首先我的用户再次登录。但是当我开始将产品添加到购物篮时,我的用户突然不再登录了。

有没有办法告诉Chrome在会话中保留Cookie,而无需手动保存和恢复Cookie?

1 个答案:

答案 0 :(得分:-1)

我使用java编程语言编写了一个类似的程序。 请参考以下代码。它可能对你有所帮助。 程序有许多用于可读性的注释。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<input id="test" />
<div id="map"></div>