web-dev-qa-db-fra.com

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 utiliser et quand?

258
Ulquiorra

C'est une bonne question que j'ai vu des gens utiliser Close () quand ils ne devraient pas. J'ai consulté le code source des liaisons Selenium Client et WebDriver C # et constaté que:.

  1. webDriver.Close() - Ferme la fenêtre du navigateur sur laquelle le pilote a le focus
  2. webDriver.Quit() - Appelle Dispose ()
  3. webDriver.Dispose() Ferme toutes les fenêtres du navigateur et met fin à la session en toute sécurité

Le code ci-dessous disposera de l'objet pilote, mettra fin à la session et fermera tous les navigateurs ouverts lors d'un test, que le test échoue ou réussisse.

public IWebDriver Driver;

[SetUp]
public void SetupTest()
{
    Driver = WebDriverFactory.GetDriver();
}

[TearDown]
public void TearDown()
{
    if (Driver != null)
      Driver.Quit();
}

En résumé, assurez-vous que Quit () ou Dispose () est appelé avant de quitter le programme et n'utilisez pas la méthode Close () à moins d'être sûr de ce que vous faites.

Note
J'ai trouvé cette question lorsque j'essayais de comprendre un problème connexe qui expliquait pourquoi mes ordinateurs virtuels manquaient d'espace disque. Il s'est avéré qu'une exception empêchait l'appel Quit () ou Dispose () d'exécuter chaque exécution, ce qui entraînait le remplissage du disque dur par le dossier appData. Nous utilisions donc correctement la méthode Quit () mais le code était inaccessible. Résumé: assurez-vous que tous les chemins de code nettoient vos objets non gérés à l'aide de modèles protégés par exception ou implémentent IDisposable.

aussi
Dans le cas d’un appel de RemoteDriver, les commandes Quit () ou Dispose () fermeront également la session sur le serveur Selenium. Si la session n'est pas fermée, les fichiers journaux de cette session restent en mémoire.

223
rcasady616

Close() - Il est utilisé pour fermer le navigateur ou la page actuellement active.

Quit() - Il est utilisé pour fermer l'instance du pilote Web ou la détruire (fermez toutes les fenêtres).

Dispose() - Je ne suis pas au courant de cette méthode.

44
Manigandan

quit(): quitte ce pilote, en fermant toutes les fenêtres associées ouvertes.

close(): ferme la fenêtre en cours en quittant le navigateur s'il s'agit de la dernière fenêtre ouverte.

14
Ran Adler

driver.close et driver.quit sont deux méthodes différentes pour fermer la session du navigateur dans Selenium WebDriver. Comprendre les deux et savoir quand utiliser chaque méthode est important pour 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.

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

driver.dispose - Comme mentionné précédemment, il s'agit d'une méthode interne de WebDriver qui a été supprimée en mode silencieux conformément à une autre réponse - Vérification nécessaire. Cette méthode n'a pas vraiment de cas d'utilisation dans un flux de travail de test normal, car l'une ou l'autre des méthodes précédentes devrait fonctionner pour la plupart des cas d'utilisation.

Explication 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 pas driver.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 devrait expliquer la différence entre les méthodes driver.close et driver.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

14
Anudeep Samaiya

close (): - Supposons que vous ayez ouvert plusieurs fenêtres de navigateur avec la même instance de pilote. Si vous appelez close () sur l'instance de pilote, vous fermez la fenêtre en cours sur laquelle l'instance de pilote est pointée. Mais l'instance de 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 de pilote et qu’une ou plusieurs fenêtres de navigateur sont ouvertes, toutes les fenêtres de navigateur ouvertes sont fermées et l’instance de pilote est collectée, c’est-à-dire qu’elle est supprimée de la mémoire. Vous ne pouvez donc plus utiliser cette instance de pilote pour effectuer une autre opération après avoir appelé quit (). Si vous le faites, cela déclenchera une exception.

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

Vous pouvez aller sur le _ officiel de Selenium Java doc lien pour référence.

5
Prasanta Biswas

En raison d'un problème rencontré sur Github de PhantomJS, la méthode quit () ne met pas fin au processus PhantomJS. Tu devrais utiliser:

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

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

lien

5
Wesam Na

close () est une commande webdriver qui ferme la fenêtre du navigateur actuellement active.

Au cours du processus d'automatisation, si plusieurs fenêtres de navigateur sont ouvertes, la commande close () ne ferme que la fenêtre de navigateur actuelle ayant le focus à ce moment. Les fenêtres de navigateur restantes 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 Automation n'ouvre qu'une seule fenêtre de navigateur, les commandes close () et quit () fonctionnent de la même manière. Les deux fonctionnalités diffèrent par leurs fonctionnalités lorsque plusieurs fenêtres de navigateur sont ouvertes au cours de l'automatisation.

Pour la référence ci-dessus: cliquez ici

Commande Eliminer Dispose () doit appeler Quit (), et il semble que ce soit le cas. Cependant, le même problème se pose en ce sens que toutes les actions ultérieures sont bloquées jusqu'à ce que PhantomJS soit fermé manuellement.

Ref Lien

4
Dhaval Atri

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

driver.close - Ferme la fenêtre du navigateur sur laquelle le focus est défini.

driver.quit - Elle appelle fondamentalement 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.

Je crois comprendre que driver.close(); fermera le navigateur actuel et driver.quit(); mettra fin à tous les navigateurs.

2
BIUbiubiu

Sélénium WebDriver

  1. WebDriver.Close() Cette méthode permet de fermer la fenêtre actuellement ouverte. Il ferme la fenêtre ouverte en cours sur laquelle le pilote est actif.

  2. WebDriver.Quit() Cette méthode permet de détruire l'instance de WebDriver. Il 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é.

2
s10v10s