Эквивалент jQuery.active в javascript Selenium Web Driver - PullRequest
0 голосов
/ 26 сентября 2018

Я использую веб-драйвер Selenium для взаимодействия с каким-либо веб-сайтом.Если веб-сайт использует jQuery, мы можем получить ожидающий AJAX-запрос, используя jQuery.active.

 JavascriptExecutor jsx = (JavascriptExecutor) driver;

Int totAjaxRequest = (Int) jsx.executeScript ("jQuery.active");

Int totAjaxRequest = (Int)jsx.executeScript("return jQuery.active");

В случае есливеб-сайт не использует jQuery, как мы можем посчитать количество XMLHttpRequest запросов.

1 Ответ

0 голосов
/ 02 октября 2018

Сохраните это на своем веб-сайте и назовите его из селена.Я думаю, что нет никакой подобной встроенной функции js.Я не думаю, что это ответ, который вы ищете, но, как я уже сказал выше, javascript сам по себе не имеет такой функции.

 var activeXhr = (function(){
    var count = 0;
    XMLHttpRequest.prototype.nativeSend = XMLHttpRequest.prototype.send;
    XMLHttpRequest.prototype.send = function(body) {

    this.onreadystatechange  = function(){
        switch(this.readyState){
            case 2: count++; break
            case 4: count--; break
        }
    };
    this.nativeSend(body);
    };

    return count;
})();

console.log(activeXhr);

Если вы не можете редактировать или добавлять новый скрипт на свой сайт,Вы все еще можете запустить скрипт.

Int totAjaxRequest = (Int)jsx.executeScript("
    (function(){
        var count = 0;
        XMLHttpRequest.prototype.nativeSend = XMLHttpRequest.prototype.send;
        XMLHttpRequest.prototype.send = function(body) {

        this.onreadystatechange  = function(){
            switch(this.readyState){
                case 2: count++; break
                case 4: count--; break
                }
            };
            this.nativeSend(body);
        };

        return count;
    })()

");
...