Je remplis un formulaire Web qui possède des champs de saisie, des menus déroulants, des champs d'autocomplete et des boutons d'action.
Je tire les données d'une feuille Excel utilisant OpenPyXL. Initialement, il utilisait entre 3 et 4 secondes pour peupler ces champs. Après avoir ajouté Est-ce que quelqu'un a des suggestions sur la manière dont je serais en mesure de réduire le temps nécessaire peupler chaque champ? Toute aide est vraiment appréciée. Je quitte la fonction ReadData ainsi que la population_Form que j'utilise pour remplir un champ de texte à titre d'exemple. P> acclamations. P> méthode pour lire chaque cellule: p> méthode pour remplacer le champ d'entrée: p> read_only = true code> à ma fonction ReadData, il s'est amélioré un peu mais pas comme prévu. P>
3 Réponses :
Essayez de mettre en œuvre la méthode Il ne fournit pas une API riche comme OpinPycyl mais je suis sûr que ça va courir plus vite. P> READDATA CODE> à l'aide de la bibliothèque "XLRD". p>
Merci pour cela, je regarderais certainement cette bibliothèque car je ne me soucie pas beaucoup de l'API, mais de la vitesse de lecture des données plutôt.
Sauf si votre tableur est énorme, je suis assez certain que le car il semble que vous ne disposez que d'un fichier que vous pouvez charger les données à l'aide de: p> Pour l'utiliser, vous appelez ce qui précède lancera wait_for_element code> et
webdiverwait code> Les appels prennent le plus de temps.
Comme il a déjà été suggéré, essayez de mettre en cache les données de tableur (s) à l'aide d'une structure efficace, telle que: load_data (nom de fichier) code> une fois (lorsque votre application démarre) et accédez aux données chargées ultérieurement à l'aide de
xls_data code> au lieu de
readdata code>: p>
keerror code> si le nom la feuille < / em> est invalide ou
indexerror code> pour une combinaison de la ligne invalide, em>. p> p>
Je ne suis pas tout à fait sûr comment faire cela, mais je vais passer du temps à ce que j'ai vraiment besoin d'accélérer le processus car j'ai des enregistrements de 5k (lignes Excel) pour entrer dans ce formulaire Web.
J'ai fait l'essayer, merci pour ça. Bien que je ne sois pas sûr de savoir comment je voudrais l'utiliser car la fonction de données de charge que vous avez créée ne prend qu'un argument (nom de fichier) et je devrais l'utiliser dans ma fonction ReadData qui prend 4 arguments, voir ci-dessous: ReadData (nom de fichier, "CallCenter", Row_num, colonne_num)
J'ai ajouté plus de détails sur la manière dont vous pouvez utiliser la fonction load_data code>.
Merci pour votre aide, cela fonctionne bien. Bien que cela reste un peu lent (je travaille avec un fichier avec 500 rangées) et chaque fois que je dois peupler un champ ou une liste déroulante, je dois lire à partir de la feuille Excel. J'ai aussi besoin d'écrire sur ce même XLS afin que le read_only = true m'empêcherait d'écrire dans le même fichier. Je me demande s'il y a une autre bibliothèque similaire à OpenPyXL, ce qui me permettrait de lire simplement la ligne dont j'ai besoin, de stocker cela en mémoire (ou de créer un fichier temporaire) et ne lisez que de cette ligne tout au long du script.
Lorsque vous remplissez un formulaire Web, à la fin, les données seront envoyées à un serveur avec une demande postale.
Ce que je recommanderais, c'est d'utiliser E.G. Wireshark to capture em> cette demande postale.
Analyser cette demande de voir ce qui est envoyé exactement au serveur. Ensuite, vous pouvez créer em> une telle demande de post à l'aide du module code> Demandes code>.
Cela signifie que vous n'avez pas à gérer le sélénium du tout. P>
Et comme les autres ont mentionné, lisez le fichier Excel qu'une seule fois. p>
J'ai déjà essayé cela, mais je travaille sur un site Web d'entreprise avec beaucoup de restrictions et je ne suis pas autorisé à faire des demandes d'obtention / poste. C'est pourquoi j'ai décidé de le faire avec le sélénium. Merci quand même pour la suggestion, c'est la meilleure option d'être juste tant que vous avez le bon accès.
Donc, ils font probablement beaucoup de validation de données dans JavaScript, et ils ne veulent pas que vous fassiez une fin de course autour de cela? :-)
C'est exactement ça :) Je continuerai à travailler sur cette demande de poste une fois que j'ai terminé avec le script sélénium en premier.
Si vous augmenterait sûrement vos performances si vous chargez une fois au classeur et non à chaque fois lorsque
lishata code> est appelé.
Une erreur recrue de mon côté mais après avoir retiré la pièce de chargement du code de la fonction, je ne vois pas une augmentation majeure de la performance. Je continuerai à rechercher des moyens d'améliorer les performances ou d'examiner peut-être une bibliothèque de différence pour extraire les données des XLS et l'alimenter sur le formulaire Web. Merci de votre aide.