【问题标题】:Writing WebTests using Visual Studio 2013 for a website written in C# and Javascript使用 Visual Studio 2013 为用 C# 和 Javascript 编写的网站编写 WebTest
【发布时间】:2017-10-22 16:37:14
【问题描述】:

我正在使用 Visual Studio 2013 为一个用 C# 和 JavaScript 实现的网站编写 WebTest。以下是我正在遵循的步骤,以及我遇到的问题。
注意:我无权访问该网站的源代码
步骤

  1. 记录 WebTest,这需要上传 PDF 文件。

  2. 选择要上传的文件后,JavaScript 会执行并生成一个唯一的动态 GUID 来标识要上传的文件。再次上传相同的文件,会生成一个新的 GUID。

  3. 唯一的 GUID 用作发送到服务器的 HTTP 请求的一部分。

  4. 重放 WebTest 时,使用相同的(记录的)GUID,这使得

    测试失败。

我的问题是: 由于重放 WebTest 时 JavaScript 不执行,有没有办法在重放 WebTest 时生成 GUID?如果没有,是否有解决方法? 感谢您提供解决此问题的任何提示。

【问题讨论】:

  • 谢谢你的建议。这本来可行,但我刚刚了解到,记录的值也用于应用程序中将上传的文件链接到用户的个人资料。听起来应用程序需要更改以捕获该值,例如作为隐藏字段或其他方式。因此,通过创建新的 GUID,测试仍然会失败,因为我将通过插件创建的 GUID 和应用程序的 GUID 会不同。想法?
  • 如果您正在回复我的回答,那么最好在我的回答中添加评论。请edit您的问题更详细地解释问题。问题中的第(2)项是否仍然适用? Javascript 代码是否生成 GUID?我回答了最初的问题,但您的评论仅暗示了更复杂的问题。
  • 距离您上次参与此问题的活动已经过去了两周。问题解决了吗?如果是,请写下答案。如果没有,请edit问题添加更多详细信息,以便其他人能够给出答案。

标签: javascript visual-studio-2013 webtest


【解决方案1】:

创建一个WebTestRequestplugin。在其PreRequestDataBinding 方法中创建一个 GUID 并将其保存到上下文参数中。将插件添加到记录的请求并修改该请求以使用上下文参数中的 GUID 值。

基于以下(未经测试)代码的东西应该可以工作:

public class CreateGuid : WebTestRequestPlugin
{
    public string GuidCp { get; set; }

    public override void PreRequestDataBinding(object sender, PreRequestDataBindingEventArgs e)
    {
        Guid newGuid = Guid.NewGuid();
        e.WebTest.Context[GuidCp] = newGuid.ToString();
    }
}

您可能需要通过a parameter to ToString 设置特定的Guid 格式。

【讨论】:

    猜你喜欢
    • 2013-11-11
    • 2015-02-18
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多