1

我对 mvc 和 webtest 非常陌生,所以请在这里忍受我。

我有一个客户视图。客户视图在document.ready. 此 javascript 调用对客户控制器中的操作执行 ajax 发布,该操作将 json 返回到原始 javascript,进而更新客户视图。

在我的 webtest 中,我有一个对客户视图的请求,但是在后续的 ajax 调用完成并且视图更新之前返回了响应,因此我没有最新的页面内容。

有没有办法等到后续请求完成,以便我可以用所有数据分析整个页面?还是我走错了方向?

这是视图:

<script type="text/javascript" language="javascript">
    //Set initial state of list during page load
    $(document).ready(function() {
        ApplyFilters();        
    })
</script>

哪个调用这个javascript:

function ApplyFilters() {
.....
$.ajax({
    type: "POST",
    url: "/Customer/FilterList",
    datatype: "html",
    beforeSend: function() {
        //do some stuff
    },
    success: function(result) {
        ...
        BindCustomrGrid($find(GridClientID), result);
    },
    error: function(req, status, error) {
       // do some stuff
    }
});
}

最后是控制器:

    [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult FilterList(string io, string name, string owner)
    {
        ... // some api calls
        return this.Json(new { customerList, serviceException });
    }
4

3 回答 3

1

我决定做的是发布到从 ajax 请求调用的 url,反序列化自定义验证类中的 json 并在那里验证它。

于 2010-10-14T19:52:17.543 回答
1

在这种情况下,我强烈推荐TestPlan作为测试工具。它的优点是当您在页面上查找元素时,它会自动等待它们允许 JavaScript 完成执行。因此,如果您执行以下操作:

Check //button[@id='get123']

它将等到该按钮存在。显然它不会永远等待。在无显示的后端,它会检查是否有任何 JavaScript 正在运行,如果没有,它会立即返回,因为不可能出现某些东西。

于 2010-10-21T05:34:56.507 回答
0

succes 函数在请求返回时运行。但是,您在加载 DOM 时开始此 ajax 调用。这很奇怪,通常会在用户执行某项操作或经过一定时间后发出一些 AJAX 请求。

如果您想等到整个页面加载完毕后再发出 AJAX 请求,您可以使用:

$(window).load(function() {
  ApplyFilters();        
})
于 2010-09-24T18:14:24.943 回答