352 votes

Différence entre webdriver.Dispose(), .Close() et .Quit()

Quelle est la différence entre ces

  1. Webdriver.Close()
  2. Webdriver.Quit()
  3. Webdriver.Dispose()

Lequel doit être utilisé et quand ?

2 votes

La méthode #dispose semble avoir été silencieusement supprimée de l'API WebDriver. Aucune mention dans le changelog, la mention la plus récente que j'ai pu trouver était la docs api v2.26, dont je ne trouve plus le lien.

0 votes

Je vois d'où vient la confusion dans les réponses ci-dessous. Je pense que cette question était à l'origine une question C# car les méthodes ci-dessus (Close, Quit et Dispose) commencent par une majuscule (C#) et non par une minuscule (java). Dispose n'a pas été supprimé des liaisons client WebDriver C#.

0 votes

Dispose est un modèle .Net et n'est donc pas documenté dans la documentation de l'API de Selenium. Dans RemoteWebDriver, Quit appelle Dispose, qui envoie une commande Quit (DELETE /session/{sessionId}). Il y a plusieurs endroits du côté client où la commande Quit est interceptée. L'implémentation .net de FirefoxDriver, par exemple, effectue un appel à process.Kill() si le processus ne s'arrête pas de manière élégante.

6voto

Wesam Na Points 881

D'après un problème sur Github de PhantomJS, la fonction quit() ne met pas fin au processus PhantomJS. Vous devez utiliser :

import signal
driver = webdriver.PhantomJS(service_args=service_args)
# Do your work here

driver.service.process.send_signal(signal.SIGTERM)
driver.quit()

lien

5voto

Prasanta Biswas Points 237

Close():- Supposons que vous ayez ouvert plusieurs fenêtres de navigateur avec la même instance de pilote, l'appel de close() sur l'instance de pilote fermera la fenêtre actuelle vers laquelle l'instance de pilote est dirigée. Mais l'instance du pilote reste toujours 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 du pilote et qu'il y a une ou plusieurs fenêtres de navigateur ouvertes, il fermera toutes les fenêtres de navigateur ouvertes et l'instance du pilote sera collecté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() sur elle. Si vous le faites, une exception sera levée.

dispose():- Je ne pense pas qu'il existe une méthode de disposition pour une instance WebDriver.

Vous pouvez consulter la doc officielle de selenium java. lien pour référence.

3voto

s10v10s Points 63

Selenium WebDriver

  1. WebDriver.Close() Cette méthode est utilisée pour fermer la fenêtre actuellement ouverte. Elle ferme la fenêtre ouverte actuelle sur laquelle le conducteur a le focus.

  2. WebDriver.Quit() Cette méthode est utilisée pour détruire l'instance de WebDriver. Elle ferme toutes les fenêtres du navigateur associées à ce pilote et met fin à la session en toute sécurité. WebDriver.Quit() appelle Dispose.

  3. WebDriver.Dispose() Cette méthode ferme toutes les fenêtres du navigateur et met fin à la session en toute sécurité.

3voto

Nagarjuna Y Points 1

Différence entre driver.close() & driver.quit()

driver.close - Il ferme la fenêtre du navigateur sur laquelle le focus est placé.

driver.quit - Il appelle essentiellement la méthode driver.dispose qui, à son tour, ferme toutes les fenêtres du navigateur et met fin à la session WebDriver de manière élégante.

3voto

Il y a deux différences entre Quitter et fermer.

  1. Comme Quit() ferme toutes les fenêtres ouvertes par le programme, Close() ferme la fenêtre dans laquelle le focus a été placé.
  2. Quit () - Considérer, WebDriver driver = new ChromeDriver() ; L'instruction ci-dessus crée un ID de session. Le même ID de session est conservé pendant toute la session. ID de la session - 73e6d7c2ae55d9f059ad1cce248adb75

après avoir entré l'url, le même ID de session - 73e6d7c2ae55d9f059ad1cce248adb75

Après le currentUrl() l'ID de session - 73e6d7c2ae55d9f059ad1cce248adb75

Après avoir quitté() le navigateur l'ID de la session - null

si l'utilisateur essaie d'exécuter une déclaration, l'ID de session null sera envoyé au serveur. En voyant ceci, le serveur enverra l'exception - L'ID de la session est nul. Utilisation de WebDriver après avoir appelé quit() ?

Dans Close(), un ID de session aléatoire (un seul) sera créé et maintenu pour toute la session. Après avoir exécuté la Close(), session Sera invalide ou expirée . Exception

Ainsi, dans quit() la session est nulle et dans close() l'identifiant de la session est invalide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X