J'utilise C # -Selenium sur IE11 sous Windows 7/10. Pendant tout ce temps lors de l'exécution du script, la mémoire IE11 continue d'augmenter jusqu'à atteindre 1,5 Go de mémoire. Remarque Je ne peux rien fermer ni quitter car j'ai besoin de mon test pour continuer à s'exécuter. Le problème est que IE11 ne cesse de s'agrandir au fur et à mesure que le test progresse
En comparaison, lors de l'exécution du même script avec QTP, rien de tout cela ne se produit. Version WebDriver 32 bits: 3.8 et 3.141
L'application Web elle-même est une propriété exclusive Avez-vous une idée par où dois-je commencer à chercher pour résoudre le problème?
Merci
J'ai essayé de réduire mon code, de détecter les fuites de mémoire
3 Réponses :
Le problème peut être que vos scripts de test ne ferment pas réellement le (s) navigateur (s).
J'ai rencontré un bogue dans sélénium IE qui ne ferme pas le navigateur avec les commants .close ou .quite. Cela signifie que cela ouvrira beaucoup de fenêtres et que cela pourrait provoquer des fuites de mémoire.
Cela se produit pendant l'exécution du script.
J'ai oublié de mentionner: j'utilise la version 32 bits du WebDriver
Avez-vous vu les tests fonctionner dans IE? (aucun problème avec les fenêtres contextuelles de sécurité dans la fenêtre IE?) Ce problème se produit-il également avec un sous-ensemble des tests?
Fermez-vous les fenêtres IE après chaque test? Ou les gardez-vous ouverts? Parce qu'alors le problème peut également se produire pendant l'exécution du script ... Une machine virtuelle manquait de mémoire en raison de nombreuses fenêtres non fermées.
Un exemple d'extrait de code du processus d'initialisation / de fermeture de WebDriver et du navigateur Web nous aurait donné des indications sur l'utilisation de IEDriverServer et IE11 la mémoire continue d'augmenter jusqu'à ce qu'elle atteigne 1,5 Go .
Peut-être que selon les meilleures pratiques, invoquez toujours driver.quit ()
dans la méthode tearDown () {}
pour fermer et détruire le WebDriver et Web Client instances de la manière suivante:
import os import psutil PROCNAME = "IEDriverServer" # or chromedriver or geckodriver for proc in psutil.process_iter(): # check whether the process name matches if proc.name() == PROCNAME: proc.kill()
Vous pouvez trouver une discussion détaillée dans Le pilote Web PhantomJS reste en mémoire
Au cas où les processus IEDriverServer sont toujours non détruit et supprimé, vous devrez peut-être tuer les processus de la liste des tâches.
Solution Python ( multiplate-forme ):
driver.quit() // Python // or driver.quit(); // Java // or driver.Quit(); // DotNet
Vous pouvez trouver une discussion détaillée dans Selenium: Comment arrêter le processus geckodriver qui affecte la mémoire du PC, sans appeler driver.quit ()?
De plus ,
Le problème est que je ne peux pas fermer ou quitter quoi que ce soit car j'ai besoin de mon test pour continuer à fonctionner. Le problème est que IE11 ne cesse de s'agrandir au fur et à mesure que le test progresse
cela ne répond pas à la question
@Shmulikb Selenium est largement utilisé pour l ' automatisation des tests où chaque cas de test est basé sur des cas d'utilisation . OMI, ... j'ai besoin de mon test pour continuer à fonctionner ... n'est pas un cas d'utilisation valide. Peut-être aurez-vous besoin de l'aide d'un serveur d'applications , par exemple Tomcat .
@DebanjanB Comme mentionné, QTP fait bien le travail et Selenium fait exploser la mémoire d'IE11 en 5 à 10 minutes de fonctionnement.
@Shmulikb Je ne peux pas commenter QTP mais Selenium de par sa conception est un peu différent de QTP. De plus, IE est un autre grand défi qu'il faut maîtriser.
Après de nombreuses recherches, j'ai quelque peu résolu le problème en désactivant le "Débogage de script (Internet Explorer)" dans IE11 sous Outils -> Options -> Avancé.
Sur mon code Selenium, il y a une écoute de ce ScriptExecuted événements (ce qui est un must dans mon code):
firingDriver.ScriptExecuted += firingDriver_ScriptExecuted;
Peut-il être lié?
Donc pour l'instant, je n'ai aucune idée pourquoi désactiver le débogage de script réduit considérablement les fuites de mémoire. Lors de l'exécution du même scénario QTP, il n'y a pas de fuite de mémoire.
et si quelqu'un a une idée, j'aimerais l'entendre
Merci!
exécutez 'taskkill / f / im iexplore.exe' qui devrait nettoyer les fenêtres qui ne répondent pas. voir la réponse d'origine
Je n'ai aucun problème à fermer ou à tuer IE. Le problème se produit lorsque et pendant l'exécution du script