6

我正在尝试在 VS2012 中为 MVC 站点进行 Web 测试。其中一种情况是登录并浏览产品列表,选择您想要的产品并进入购买页面。

问题是当 web 测试运行时,我收到一个关于防伪令牌的错误并且它不匹配。

到底怎么可能用防伪令牌进行测试?用户必须登录 - 负载测试(最终)将有成千上万的用户,但需要首先让它为 1 个用户工作。

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

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

4

3 回答 3

10

一旦你运行你的脚本并且它失败了,去调用失败的那个。

  • 转到响应选项卡

  • 在正文中,找到输入标签中的 __RequestVerificationToken 名称,然后提取 value 属性之间的所有内容。

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

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

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

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

{{上下文参数名称}}

(包括 2 个花括号)

  • 按回车确认/保存

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

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

于 2013-11-16T08:07:27.670 回答
1

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

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

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

于 2014-12-18T16:37:23.073 回答
0

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

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

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

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

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

于 2013-11-14T23:20:19.867 回答