防伪令牌和Web测试

6
我正在尝试在VS2012中进行MVC网站的Web测试。 其中一个场景是登录并浏览产品列表,选择所需的产品并跟随到购买页面。
问题在于,运行Web测试时,我会收到有关防伪令牌不匹配的错误提示。
怎么可能在带有防伪令牌的情况下进行测试呢?用户必须登录 - 最终将有数千个用户进行负载测试,但需要先为1个用户使其正常工作。
登录视图/操作确实在视图上执行AntiForgeryToken,并在控制器上进行验证。
非常感谢您的建议和提示。

什么是“防伪标记”?您能像其他动态参数一样处理它吗?也许可以通过在登录响应上设置提取规则,然后在后续请求中传递该值来实现。 - AdrianHHH
是的,我成功修复了它...很快会发布答案。 - Ahmed ilyas
3个回答

10

如果你运行脚本失败了,就去找到失败之前的调用。

  • 进入响应标签页

  • 在正文中,找到__RequestVerificationToken名称,并从value属性中提取中间的所有内容。

  • 选择该值,右键单击 > 添加提取规则并按OK。

  • 你将找到一个提取规则文件夹,在其中是我们刚刚创建的提取规则。可以自由地重命名上下文参数名称。

  • 转到下一页,这应该是失败的页面,并找到名为“__RequestVerificationToken”的表单提交参数。查看它的属性

  • 将其绑定到之前创建的上下文参数名称。为此,请查看此提交参数的属性,并将“Value”设置为:

{{上下文参数名称}}

(包含2个大括号)

  • 按Enter确认/保存

下次运行脚本 - 一切都能正常工作

这就是对我起作用的方法...


1

我遇到了类似的问题。在记录完网页测试脚本后,脚本会在登录时失败,提示如下信息:

提供的防伪标记是为用户 "Domain\UserName" 设计的,但当前用户为空。

解决方法是在测试属性中将 PreAuthenticate 属性设置为 false。默认情况下,Web 测试将向服务器传递身份验证标头,该标头被用于生成令牌。


0

我不熟悉 "VS2012 中的 Web 测试",但我知道 "防伪标记令牌" 需要将令牌从浏览器发送回服务器。

我有使用 Selenium-Webdriver 的经验,并建议您使用它,因为它提供了一个与支持的浏览器交互的 API,就像真实用户一样。

如果您在测试项目中添加 Selenium WebDriver 2.37.0 NuGet 包,您就可以轻松开始使用 Selenium WebDriver。

Selenium-WebDriver使用每个浏览器本地的自动化支持直接调用浏览器。这些直接调用的方式以及它们所支持的功能取决于您正在使用的浏览器。

Selenium-webdriver目前支持以下驱动程序:


感谢您的建议,但对我来说使用其他方法并不是解决方案。 - Ahmed ilyas
我认为与真实浏览器交互只适用于回归/UI测试,而不适用于性能/负载测试。 - Roger Perkins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接