2016-06-29 7 views
1

テストにいくつかのJSスクリプトがあります。私は理由を理解していないが、今は仕事をやめた。 分度器をバージョン3.3.0にアップデートした後に起こったのかもしれません。 誰かが何が起こるか知っているかもしれませんか?executeScriptが動作しない

マイスクリプト:

PsComponent.prototype.getHighlightedText = function() { 
    return browser.executeScript_(function getSelectionText() { 
    var text = ""; 
    if (window.getSelection) { 
     text = window.getSelection().toString(); 
    } else if (document.selection && document.selection.type != "Control") { 
     text = document.selection.createRange().text; 
    } 
    return text; 
    }); 
}; 

結果:

nothing 

そして:

PsComponent.prototype.getCaretPosition = function() { 
    return browser.executeScript(function (input) { 
    if (document.selection && document.selection.createRange) { 
     var range = document.selection.createRange(); 
     var bookmark = range.getBookmark(); 
     var caret_pos = bookmark.charCodeAt(2) - 2; 
    } else { 
     if (input.setSelectionRange){ 
     caret_pos = input.selectionStart; 
     } 
    } 
    return caret_pos; 
    }); 
}; 

結果:

- Failed: JavaScript error (WARNING: The server did not provide any stacktrace information) 

答えて

1

が直接質問に答えるが、ここで我々が使用している同様の機能わけではありません(私はそのようなことが自然に任意のブラウザのテスト自動化プロジェクトに出てくるだろうと思います):

this.getCaretPosition = function (elm) { 
    return browser.executeScript(function() { 
     var webElement = arguments[0]; 

     return webElement.value.slice(0, webElement.selectionStart).length; 
    }, elm.getWebElement()) 
}; 

this.getInputSelection = function (elm) { 
    return browser.executeScript(function() { 
     var webElement = arguments[0]; 

     return webElement.value.substring(webElement.selectionStart, webElement.selectionEnd); 
    }, elm.getWebElement()) 
}; 

使用サンプル:

expect(helpers.getCaretPosition(amountInput)).toEqual(1); 
expect(helpers.getInputSelection(amountInput)).toEqual("-100.00"); 
+0

ありがとうございました!これは私のメソッドのための素晴らしい選択肢です、それは動作します。)しかし、私のメソッドが今働いていない理由は私のための魔法のようです... –

+0

@ЛилияСапуринаnice!私たちは皆さんがこれらの関数を複雑にしていると思います。基本的に要素の 'selectionStart'と' selectionEnd'だけを使用しています。 'window'や' document'オブジェクトは関係ありません。ありがとう。 – alecxe

関連する問題