2016-06-29 1 views
1

J'ai des scripts JS dans mes tests. Je ne comprends pas pourquoi, mais ça a cessé de fonctionner maintenant. Peut-être que cela s'est passé après la mise à jour de protractor (à la version 3.3.0). Peut-être que quelqu'un sait ce qui peut arriver?executeScript ne fonctionne pas

Mes scripts:

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

Résultat:

nothing 

Et:

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

Résultat:

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

Répondre

1

ne répond pas directement à la question, mais voici les fonctions similaires que nous utilisons (je suppose que des choses comme ça viendrait naturellement dans tout projet d'automatisation de test du navigateur):

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

Exemples d'utilisation:

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

Je vous remercie! C'est une excellente alternative pour mes méthodes et cela fonctionne.) Mais c'est un peu magique pour moi pourquoi mes méthodes ne fonctionnent pas maintenant ... –

+0

@ ЛилияСапурина nice! Je pense que vous compliquez trop ces fonctions, nous n'utilisons que les éléments 'selectionStart' et' selectionEnd' d'un élément, pas d'objet 'window' ou' document'. Merci. – alecxe