防伪令牌和网络测试

时间:2013-11-14 22:15:56

标签: asp.net-mvc-4 web-testing antiforgerytoken

我正在尝试在VS2012中为MVC站点进行Web测试。 其中一个方案是登录并浏览产品列表,选择您想要的产品并按照购买页面进行操作。

问题是,当运行Web测试时,我收到有关防伪标记的错误,并且它不匹配。

如何使用防伪令牌进行测试?用户必须登录 - 将有数千名用户进行负载测试(最终),但需要让它首先为1位用户工作。

登录视图/操作会在控制器的视图和验证中执行AntiForgeryToken。

任何建议和提示都表示赞赏。

3 个答案:

答案 0 :(得分:10)

运行脚本后,如果脚本失败,请转到继续执行失败的调用。

  • 转到回复标签

  • 在正文中,找到输入标记中的__RequestVerificationToken名称,并提取值属性之间的所有内容。

  • 选择值并右键单击>添加提取规则,然后按确定。

  • 您将找到一个提取规则文件夹,在其下面是我们刚刚创建的提取规则。随意重命名上下文参数名称。

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

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

{{语境参数名称}}

(包括2x花括号)

  • 按enter键确认/保存

下次运行脚本时 - 一切正常

这就是我的工作方式......

答案 1 :(得分:1)

我看到了类似的问题。记录Web测试脚本后,脚本将在登录时失败,并显示以下消息:

提供的防伪令牌适用于用户“Domain \ UserName”,但当前用户为“”。

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

答案 2 :(得分:0)

我不熟悉“VS2012中的网络测试”,但据我所知"Anti-Forgery Token"需要将令牌从浏览器发送回服务器。

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

如果您向测试项目添加Selenium WebDriver 2.37.0 NuGet package,则可以轻松开始使用Selenium WebDriver。

  

Selenium-WebDriver使用每个浏览器直接调用浏览器   浏览器对自动化的原生支持。这些直接电话是怎样的   制作,他们支持的功能取决于您的浏览器   使用

     

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