selenium execute javascript java



JavaScript Selenium Web DriverのjQuery.activeと同等のもの (1)

私はいくつかのウェブサイトと対話するためにSelenium webdriverを使っています。
WebサイトがjQueryを使用している場合は、 jQuery.activeを使用して保留中のAJAXリクエストを取得できます。

 JavascriptExecutor jsx = (JavascriptExecutor) driver;

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

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

WebサイトがjQueryを使用していない場合は、 XMLHttpRequestリクエストの数を数えることができます。


これをあなたのウェブサイトに保管し、セレンから呼び出してください。 私は同様の組み込み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);

Webサイトに新しいスクリプトを編集または追加できない場合でも、スクリプトを実行できます。

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;
    })()

");




selenium-firefoxdriver