1

我正在使用 Selenium (2.24) 生成单元测试(用于 Visual Studio 单元测试框架)。在为 FireFox 使用 C# WebDriver 时,驱动程序启动的浏览器似乎没有通过 javascript 找到我的网站 cookie(我的站点中包含一个 javascript 文件,用于查找 cookie 并让我知道它们是否被发现)。此外,它不使用浏览器图像缓存,并且总是从服务器请求新图像。当我从“正常”(不是由 Selenium 启动的)FireFox 运行我的站点时,不会发生这种行为。

奇怪的是,在我的单元测试中调用下面的代码确实会返回我的 cookie(我的 JavaScript 无法找到它)

driver.Manage().Cookies.GetCookieNamed("MyCookie");

如何配置驱动程序以尊重我的 cookie 并使用浏览器图像缓存?此功能是测试我的网站的关键。

4

2 回答 2

3

默认情况下,FirefoxDriver 将在每次启动 Firefox 时创建一个新的匿名配置文件。如果您希望它使用现有的配置文件,您需要告诉它。

在 Java 中,您可以这样做:

ProfilesIni allProfiles = new ProfilesIni();
FirefoxProfile profile = allProfiles.getProfile("MyProfile");
WebDriver driver = new FirefoxDriver(profile);

我假设 C# 中有类似的东西

于 2012-07-06T15:16:57.870 回答
2

对于 cookie:如果 cookie 被标记为“仅限 HTTP”,则页面上的 JavaScript 将无法看到它。因此,任何在页面上使用 JavaScript 执行的代码都不会看到这个特定的 cookie。

您可以通过使用一些 HTTP 调试器(即 Fiddler)来确认它是否使用 HttpOnly 属性设置了 cookie。您还可以通过开发工具检查在页面上运行脚本或javascript:alert(...)在地址栏中输入是否可以看到 cookie ( document.cookie)

于 2012-07-05T22:10:59.730 回答