Quelle est la différence entre ces
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
Lequel utiliser et quand?
selenium-webdriver
Puran Joshi
la source
la source
Réponses:
C'est une bonne question. J'ai vu des gens utiliser Close () alors qu'ils ne devraient pas. J'ai regardé dans le code source pour les liaisons Selenium Client & WebDriver C # et j'ai trouvé ce qui suit.
webDriver.Close()
- Fermez la fenêtre du navigateur sur laquelle le pilote a le focuswebDriver.Quit()
- Appels Dispose ()webDriver.Dispose()
Ferme toutes les fenêtres du navigateur et termine la session en toute sécuritéLe code ci-dessous supprime l'objet pilote, met fin à la session et ferme tous les navigateurs ouverts pendant un test, que le test échoue ou réussisse.
En résumé, assurez-vous que Quit () ou Dispose () est appelé avant de quitter le programme et n'utilisez la méthode Close () que si vous êtes sûr de ce que vous faites.
Remarque
J'ai trouvé cette question lorsque j'essaie de comprendre un problème connexe pourquoi mes machines virtuelles manquaient d'espace sur le disque dur. Il s'avère qu'une exception empêchait Quit () ou Dispose () d'être appelé à chaque exécution, ce qui provoquait le remplissage du dossier appData sur le disque dur. Nous utilisions donc correctement la méthode Quit () mais le code était inaccessible. Résumé assurez-vous que tous les chemins de code nettoieront vos objets non gérés en utilisant des modèles d'exception ou implémentez IDisposable
De plus,
dans le cas où RemoteDriver appelle Quit () ou Dispose (), la session sera également fermée sur le serveur Selenium. Si la session n'est pas fermée, les fichiers journaux de cette session restent en mémoire.
la source
Quit()
c'est une redirection versDispose()
Close()
- Il est utilisé pour fermer le navigateur ou la page actuellement en cours de mise au point.Quit()
- Il est utilisé pour arrêter l'instance de pilote Web ou détruire l'instance de pilote Web (Fermez toutes les fenêtres).Dispose()
- Je ne connais pas cette méthode.la source
Quit
etDispose
doivent être synonymes les unes des autres. En d'autres termes, lesQuit
appelsDispose
.driver.close
etdriver.quit
deux méthodes différentes pour fermer la session du navigateur dans Selenium WebDriver. Il est important de comprendre les deux et de savoir quand utiliser chaque méthode dans l'exécution de votre test. Par conséquent, j'ai essayé de faire la lumière sur ces deux méthodes.driver.close
- Cette méthode ferme la fenêtre du navigateur sur laquelle le focus est défini. Malgré le nom familier de cette méthode,WebDriver
n'implémente pas l'AutoCloseable
interface .driver.quit
- Cette méthode appelle essentiellementdriver.dispose
une méthode désormais interne qui, à son tour, ferme toutes les fenêtres du navigateur et met fin à la session WebDriver avec élégance.driver.dispose
- Comme mentionné précédemment, est une méthode interne de WebDriver qui a été supprimée en silence selon une autre réponse - Vérification nécessaire. Cette méthode n'a vraiment pas de cas d'utilisation dans un flux de travail de test normal, car l'une des méthodes précédentes devrait fonctionner pour la plupart des cas d'utilisation.Explication du cas d'utilisation: vous devez utiliser
driver.quit
chaque fois que vous souhaitez terminer le programme. Il fermera toutes les fenêtres de navigateur ouvertes et mettra fin à la session WebDriver. Si vous n'utilisez pasdriver.quit
à la fin du programme, la session WebDriver ne se fermera pas correctement et les fichiers ne seront pas effacés de la mémoire. Cela peut entraîner des erreurs de fuite de mémoire.L'explication ci-dessus doit expliquer la différence entre les méthodes
driver.close
etdriver.quit
dans WebDriver. J'espère que tu trouves cela utile.Le site Web suivant contient de bons conseils sur les tests de sélénium: Lien
la source
quit()
: Quitte ce pilote, fermant toutes les fenêtres associées qui étaient ouvertes.close()
: Fermez la fenêtre actuelle, quittez le navigateur s'il s'agit de la dernière fenêtre actuellement ouverte.la source
close (): - Supposons que vous ayez ouvert plusieurs fenêtres de navigateur avec la même instance de pilote, maintenant appeler close () sur l'instance de pilote fermera la fenêtre actuelle vers laquelle l'instance de pilote est pointée. Mais l'instance de pilote reste en mémoire et peut être utilisée pour gérer d'autres fenêtres de navigateur ouvertes.
quit (): - Si vous appelez quit () sur l'instance de pilote et qu'il y a une ou plusieurs fenêtres de navigateur ouvertes, cela fermera toutes les fenêtres de navigateur ouvertes et l'instance de pilote sera récupérée, c'est-à-dire supprimée de la mémoire. Vous ne pouvez donc plus utiliser cette instance de pilote pour effectuer d'autres opérations après avoir appelé quit () dessus. Si vous le faites, il lèvera une exception.
dispose (): - Je ne pense pas qu'il existe une méthode de disposition pour une instance WebDriver.
Vous pouvez aller sur ce lien java doc officiel de sélénium pour référence.
la source
Basé sur un problème sur Github de PhantomJS, le quit () ne met pas fin au processus PhantomJS. Tu devrais utiliser:
lien
la source
close () est une commande de pilote Web qui ferme la fenêtre du navigateur qui est actuellement active. Malgré le nom familier de cette méthode,
WebDriver
n'implémente pas l'AutoCloseable
interface .Pendant le processus d'automatisation, s'il y a plus d'une fenêtre de navigateur ouverte, la commande close () ne fermera que la fenêtre de navigateur actuelle qui a le focus à ce moment. Les autres fenêtres du navigateur ne seront pas fermées. Le code suivant peut être utilisé pour fermer la fenêtre actuelle du navigateur:
quit () est une commande webdriver qui appelle la méthode driver.dispose, qui à son tour ferme toutes les fenêtres du navigateur et met fin à la session WebDriver. Si nous n'utilisons pas quit () à la fin du programme, la session WebDriver ne sera pas fermée correctement et les fichiers ne seront pas effacés de la mémoire. Cela peut entraîner des erreurs de fuite de mémoire.
Si le processus d'automatisation n'ouvre qu'une seule fenêtre de navigateur, les commandes close () et quit () fonctionnent de la même manière. Les deux diffèrent dans leurs fonctionnalités lorsque plusieurs fenêtres de navigateur sont ouvertes pendant l'automatisation.
Pour la référence ci-dessus: cliquez ici
Dispose Command Dispose () devrait appeler Quit (), et il semble que ce soit le cas. Cependant, il a également le même problème en ce que toutes les actions suivantes sont bloquées jusqu'à ce que PhantomJS soit fermé manuellement.
Lien de référence
la source
Différence entre driver.close () et driver.quit ()
driver.close - Il ferme la fenêtre du navigateur sur laquelle le focus est défini.
driver.quit - Il appelle essentiellement la méthode driver.dispose qui à son tour ferme toutes les fenêtres du navigateur et termine la session WebDriver avec élégance.
la source
Selenium WebDriver
WebDriver.Close()
Cette méthode est utilisée pour fermer la fenêtre ouverte actuelle. Il ferme la fenêtre ouverte actuelle sur laquelle le pilote se concentre.WebDriver.Quit()
Cette méthode est utilisée pour détruire l'instance de WebDriver. Il ferme toutes les fenêtres du navigateur associées à ce pilote et termine la session en toute sécurité. WebDriver.Quit () appelle Dispose.WebDriver.Dispose()
Cette méthode ferme toutes les fenêtres du navigateur et termine la session en toute sécuritéla source
Ma compréhension est de
driver.close();
fermer le navigateur actuel et dedriver.quit();
mettre fin à tout le navigateur.la source