Je souhaite tester le téléchargement de fichiers à l'aide d'un test angularjs e2e. Comment faites-vous cela dans les tests e2e? J'exécute mon script de test via grunt karma.
angularjs
file
file-upload
gruntjs
protractor
Pawan Singh
la source
la source
Réponses:
Voici comment je fais:
path
module pour résoudre le chemin complet du fichier que vous souhaitez télécharger.Cela ne fonctionnera pas sur Firefox. Le rapporteur se plaindra car l'élément n'est pas visible. Pour télécharger dans Firefox, vous devez rendre l'entrée visible. C'est ce que je fais:
la source
__dirname
pointe parfois vers un répertoire temporaire (probablement où les tests sont copiés par le lanceur de tests). Vous pouvez utiliser à laprocess.cwd()
place de__dirname
si c'est le cas.Vous ne pouvez pas directement.
Pour des raisons de sécurité, vous ne pouvez pas simuler un utilisateur qui choisit un fichier sur le système dans une suite de tests fonctionnels telle que ngScenario.
Avec Protractor, puisqu'il est basé sur WebDriver, il devrait être possible d'utiliser cette astuce
Cela fonctionne très bien:
la source
Voici un combo des conseils d'Andres D et de davidb583 qui m'auraient aidé pendant que je travaillais à travers cela ...
J'essayais de faire exécuter des tests de rapporteur par rapport aux contrôles flowjs.
la source
Cela fonctionne pour moi.
la source
C'est ce que je fais pour télécharger un fichier sur Firefox, ce script rend l'élément visible pour définir la valeur du chemin:
la source
J'ai réalisé que l'entrée de fichier dans l'application Web que je teste n'est visible dans Firefox que lorsqu'elle est défilée à l'aide de JavaScript, j'ai donc ajouté scrollIntoView () dans le code d'Andres D pour le faire fonctionner pour mon application:
(J'ai également supprimé tous les styles de l'élément d'entrée de fichier)
la source
// Pour télécharger un fichier depuis C: \ Directory
{
};
la source
fileToUpload
?les solutions documentées actuelles ne fonctionneraient que si les utilisateurs chargent jQuery. i toutes les situations différentes, les utilisateurs recevront une erreur telle: Échec: $ n'est pas défini
Je suggérerais de documenter une solution en utilisant le code angularjs natif.
Par exemple, je suggérerais au lieu de suggérer:
suggérer:
cette dernière est plus standard, au sommet d'angulaire et plus importante ne nécessite pas de jquery
la source