Rapporteur - vide local de stockage
Je suis en utilisant le Rapporteur (au Jasmin) pour tester mon AngulaJs application.
Comme résultat de mon action je obtenir certaines données enregistrées dans le localStorage. Maintenant, j'ai besoin de tester d'autres cas, donc j'ai besoin de vider mon stockage (ou mieux supprimer uniquement certains éléments), mais Si j'essaie de le lancer:
browser.executeScript('localStorage.removeItem("config");');
J'obtiens l'erreur suivante:
UnknownError: <unknown>: Failed to read the 'localStorage' property from 'Window': Storage is disabled inside 'data:' URLs.
(Session info: chrome=35.0.1916.153)
(Driver info: chromedriver=2.10.267517,platform=Mac OS X 10.9.2 x86_64)
Aucune idée sur comment résoudre?
Merci d'avance
Vous devez vous connecter pour publier un commentaire.
Une autre solution possible est de mettre tout état de compensation dans un afterEach, qui sera exécuté après un test est exécuté: (voir https://github.com/angular/protractor/issues/188)
Failed to read the 'sessionStorage' property from 'Window': Storage is disabled inside 'data:' URLs.
C'est parce que vous n'avez pas navigué vers une url valide encore. Faire un
browser.get('/foo')
avant d'essayer d'interagir avec les objets de page commelocalStorage
.J'ai résolu ce problème en vérifiant la fenêtre.emplacement avant de tenter d'effacer/modifier sessionStorage ou localStorage.
Si une page n'a pas été chargé alors
window.location.hostname
sera égal à une chaîne vide''
. Si vous obtenez le emptystring, alors n'essayez pas d'interagir avecsessionStorage
oulocalStorage
.Voici quelques (ES6) code que j'ai utilisé dans mon rapporteur de suite pour éviter cette erreur. Remarque c'est un concombre-js Après la fonction, mais il est toujours exécutée à partir de rapporteur, à l'aide de chrome, et il montre ce que vous devez faire pour éviter cette erreur:
Je n'ai pas trouvé une façon cool de le faire, mais si je lance ma déclaration
à l'intérieur d'un il('description') déclaration de travaux. Exemple:
Cette suppression de l'élément nommé config, et donc mon test fonctionne, mais lors de la recherche et de parler de ce problème, la principale réponse que j'ai eu est:
"localStorage n'est pas le produit, de sorte que vous n'avez pas besoin (lire: vous ne devez pas) de le tester. Le droit chemin est de s'en moquer et de l'injecter contenu lorsqu'elles sont nécessaires"
Je suis toujours à la recherche pour understrand comment, pendant ce temps je pense que de ne pas philosophiquement parfait de test est toujours mieux que rien donc..
Espère que cela aide...
Si il y a encore un problème avec le localStorage lors de l'exécution d'un "removeItem()", vous pouvez utiliser un try-catch, comme: