我正在尝试在VS2012中为MVC站点进行Web测试。 其中一个方案是登录并浏览产品列表,选择您想要的产品并按照购买页面进行操作。
问题是,当运行Web测试时,我收到有关防伪标记的错误,并且它不匹配。
如何使用防伪令牌进行测试?用户必须登录 - 将有数千名用户进行负载测试(最终),但需要让它首先为1位用户工作。
登录视图/操作会在控制器的视图和验证中执行AntiForgeryToken。
任何建议和提示都表示赞赏。
答案 0 :(得分:10)
运行脚本后,如果脚本失败,请转到继续执行失败的调用。
转到回复标签
在正文中,找到输入标记中的__RequestVerificationToken名称,并提取值属性之间的所有内容。
选择值并右键单击>添加提取规则,然后按确定。
您将找到一个提取规则文件夹,在其下面是我们刚刚创建的提取规则。随意重命名上下文参数名称。
转到下一页,该页面应该是失败的页面,并找到名为“__RequestVerificationToken”的表单帖子参数。查看它的属性
将其绑定到先前创建的上下文参数名称。为此,请查看此post参数的属性,并将“Value”设置为:
{{语境参数名称}}
(包括2x花括号)
下次运行脚本时 - 一切正常
这就是我的工作方式......
答案 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目前支持以下驱动程序: