0

我使用 NUnit 和 Selenium2 的组合成功地测试了一个 ASP.NET 网站。我那里没有问题。我正在针对测试网站运行测试;测试系统和测试站点是分开的,尽管它们可能在同一台机器上——它们通过 HTTP 进行通信。

我想做的一件事是从我的测试目标站点中提取站点地图(有几个)并自动依次点击每个页面,只是检查异常等。

显然 .sitemap 文件不能通过 HTTP 拉取。但是我已经有一个用于 GoogleSitemaps 的小 ashx 处理程序,它通过 HTTP 返回 ASP.NET .sitemap 文件的 XML 版本。如果您没有登录,您将获得站点地图的“安全修剪”版本。但是,如果您登录,此处理程序会根据您的角色返回您可以看到的站点地图。

问题是: - 我可以从 Selenium2 驱动登录和注销,并且安全修剪工作完美:Selenium2 可以看到它应该看到什么,看不到它不应该看到什么。- 但是,即使我已登录,我也会看到未登录用户的站点地图版本:它已被修剪!然而,我已经登录并且测试用户有权精确地查看已被修剪掉的东西。

我当时在想...... ASP.NET“知道”我通过HTTP“登录”的方式必须是那些包含(看起来)一些安全令牌和会话ID的cookie。这就是网页如何“知道”测试用户是谁以及他们已经过身份验证的方式。处理程序,ashx,那个野兽大概没有得到 cookie。我想如果有足够的时间,我可以用 Fiddler 嗅探它,但即使我证明 cookie 不见了,我也不知道如何把它弄进去。显然我new FirefoxDriver();正在将 cookie 传递给 aspx 页面,那么 ashx 页面是怎么回事?

无论如何,也许我是在错误的树上吠叫。有没有人设法让这种类型的东西工作?请注意,即使来自 Selenium2,我的站点地图也可以正常工作:这个问题专门针对 Selenium2 和使用处理程序时的站点地图修剪。

4

0 回答 0