Ожидание завершения запроса ajax до получения resposne - PullRequest
1 голос
/ 24 сентября 2010

Я чрезвычайно новичок в mvc и webtest, поэтому, пожалуйста, примите меня сюда.

У меня есть мнение клиентов.В представлении клиента вызывается функция JavaScript на document.ready.Этот вызов javascript выполняет запись ajax для действия в контроллере клиента, который возвращает json к исходному javascript, который, в свою очередь, обновляет представление клиента.

В моем веб-тесте у меня есть запрос к представлению клиента, ноответ возвращается до завершения последующего вызова 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 });
    }

Ответы [ 3 ]

1 голос
/ 21 октября 2010

В таких случаях я настоятельно рекомендую TestPlan в качестве инструмента тестирования.Преимущество состоит в том, что при поиске элементов на странице они автоматически ждут, чтобы JavaScript завершил выполнение.Так что если вы сделаете что-то вроде:

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

Это будет ждать, пока эта кнопка не появится.Очевидно, это не будет ждать вечно.А в бэкэнде без отображения он проверит, работает ли какой-либо JavaScript, и если нет, немедленно вернется, так как что-то появиться невозможно.

0 голосов
/ 14 октября 2010

Вместо этого я решил опубликовать URL-адрес, который вызывается из запроса ajax, десериализовать json в пользовательский класс проверки и проверить его там.

0 голосов
/ 24 сентября 2010

функция succes запускается при возврате запроса. однако вы запускаете этот вызов ajax при загрузке DOM. что странно, обычно AJAX-запрос выполняется после того, как пользователь что-то сделал, или через определенное время.

если вы хотите дождаться загрузки всей страницы, прежде чем будет сделан запрос AJAX, вы можете использовать:

$(window).load(function() {
  ApplyFilters();        
})
...