1

私は mvc と webtest に非常に慣れていないので、ここで我慢してください。

私は顧客の視点を持っています。顧客ビューは で JavaScript 関数を呼び出しますdocument.ready。この JavaScript 呼び出しは、カスタマー コントローラー内のアクションへの ajax ポストを実行します。アクションは、json を元の JavaScript に戻し、カスタマー ビューを更新します。

私の Web テストでは、カスタマー ビューへの要求がありますが、後続の 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

そのような場合、 TestPlanをテスト ツールとして強くお勧めします。ページ上の要素を探すときに、JavaScript の実行が完了するまで自動的に待機するという利点があります。したがって、次のようなことをすると:

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

そのボタンが存在するまで待機します。明らかに、それは永遠に待つことはありません。また、ディスプレイのないバックエンドでは、JavaScript が実行されているかどうかを確認し、実行されていない場合は、何かを表示することができないため、すぐに戻ります。

于 2010-10-21T05:34:56.507 に答える
1

代わりに、ajaxリクエストから呼び出されたURLに投稿し、カスタム検証クラスでjsonを逆シリアル化し、そこで検証することにしました。

于 2010-10-14T19:52:17.543 に答える
0

リクエストが返されると、succes 関数が実行されます。ただし、DOM のロード時にこの ajax 呼び出しを開始します。これは奇妙ですが、通常、ユーザーが何かを行った後、または一定の時間が経過した後に、何らかの AJAX 要求を行います。

AJAXリクエストが行われる前にページ全体がロードされるまで待ちたい場合は、次を使用できます。

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