c# - 从 cookie 容器向 selenium 添加 cookie

标签 c# selenium httpwebrequest

我有一个数据 GridView ,用于收集成功的 http 请求。我想要发生的是,当单击数据 GridView 中的按钮时,它应该使用来自该特定 http 请求的 cookie 在 selenium 中打开一个浏览器。 我已经有一些了。

这是数据 GridView 的屏幕截图:https://imgur.com/a/5hs9l

这是我目前所拥有的:

CookieContainer cookiejar = new CookieContainer();
//Http request goes here
httpWebRequest1.CookieContainer = cookiejar;

这用于将商品添加到购物车并将 cookie 保存在 cookie 容器中。

这是结帐按钮的作用:

var driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://www.adidas.co.uk/on/demandware.store/Sites-adidas-GB-Site/en_GB/Cart-Show");

foreach (System.Net.Cookie cook in response.Cookies)
{                    
driver.Manage().Cookies.AddCookie(new OpenQA.Selenium.Cookie(cook.Name, cook.Value));
}

我想要发生的是每个数据 GridView 行都有一个不同的 cookie 容器,当单击结帐时,它会打开一个使用该 cookie 容器的浏览器。 目前的问题之一是我无法制作一个可以使用按钮添加 cookie 的工作公共(public) cookie 容器。 第二件事是我不知道如何为每一行制作一个单独的容器。

即使您不了解整个过程,我们也欢迎您提供任何帮助。

最佳答案

您不能遍历 cookie 集合。您必须使用反射。

Hashtable table = (Hashtable)response.Cookies.GetType().InvokeMember(
    "m_domainTable",
    BindingFlags.NonPublic |
    BindingFlags.GetField |
    BindingFlags.Instance,
    null,
    cookies,
    new object[] { }
);

                foreach (var hostname in table.Keys)
                {
                    Uri uri = new Uri(string.Format("https://{0}/", hostname));

                    foreach (System.Net.Cookie netcookie in cookies.GetCookies(uri))
                    {
                        OpenQA.Selenium.Cookie cookie = new OpenQA.Selenium.Cookie(netcookie.Name, netcookie.Value, netcookie.Domain,netcookie.Path, netcookie.Expires);
                        _currentDriver.Manage().Cookies.AddCookie(cookie);

                    }
                }

关于c# - 从 cookie 容器向 selenium 添加 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43592617/

相关文章:

c# - Microsoft Graph API,文件夹资源类型

java - 我们能得到 TestNG 报告显示测试类是通过还是失败吗

python - 如何在 Selenium 中点击迭代 Web 元素列表?

java - 如何在测试失败后停止运行 TestNG

coldfusion - 如何通过 cfhttp 模拟真实的 http 请求?

c# - 在 C# 中将 Html 存储到字符串中

c# - Windows 上的 Visual Studio Code、C# 支持

c# - WebRequest 在 ASP.NET 应用程序中失败并显示 "414 Request URI too long"

c# - 如何在 Windows 启动时运行 C# 应用程序?

java - 使用 Seam 拦截 HTTP session 的结束