В чем разница между этими
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
Какой из них использовать и когда?
selenium-webdriver
Пуран Джоши
источник
источник
Ответы:
Это хороший вопрос, я видел людей, использующих Close (), когда они не должны. Я посмотрел в исходном коде привязок Selenium Client & WebDriver C # и обнаружил следующее.
webDriver.Close()
- Закройте окно браузера, в котором находится драйверwebDriver.Quit()
- Утилизация вызовов ()webDriver.Dispose()
Закрывает все окна браузера и безопасно завершает сеансПриведенный ниже код удалит объект драйвера, завершит сеанс и закроет все браузеры, открытые во время теста, если тест пройден неудачно или пройден.
Итак, убедитесь, что Quit () или Dispose () вызваны перед выходом из программы, и не используйте метод Close (), если вы не уверены в том, что делаете.
Заметьте,
я нашел этот вопрос, когда попытался выяснить связанную проблему, почему у моей ВМ не хватает места на жестком диске. Оказывается, исключение приводило к тому, что Quit () или Dispose () не вызывались при каждом запуске, что приводило к тому, что папка appData заполняла жесткий диск. Поэтому мы правильно использовали метод Quit (), но код был недоступен. Резюме, убедитесь, что все пути кода очистят ваши неуправляемые объекты с помощью безопасных шаблонов исключений или реализуют IDisposable
Также
в случае RemoteDriver вызов Quit () или Dispose () также закроет сеанс на Selenium Server. Если сеанс не закрыт, файлы журнала для этого сеанса остаются в памяти.
источник
Quit()
это редиректDispose()
Close()
- Он используется, чтобы закрыть браузер или страницу, которая в данный момент находится в фокусе.Quit()
- Он используется для выключения экземпляра веб-драйвера или уничтожения экземпляра веб-драйвера (закройте все окна).Dispose()
- Я не знаю об этом методе.источник
Quit
иDispose
методы должны быть синонимами друг к другу. Другими словами,Quit
звонкиDispose
.driver.close
иdriver.quit
два разных метода для закрытия сеанса браузера в Selenium WebDriver. Понимание их обоих и знание того, когда использовать каждый метод, важно для выполнения теста. Поэтому я попытался пролить свет на оба этих метода.driver.close
- Этот метод закрывает окно браузера, на котором установлен фокус. Несмотря на знакомое название для этого метода,WebDriver
никак не реализоватьAutoCloseable
интерфейс .driver.quit
- Этот метод в основном вызываетdriver.dispose
теперь внутренний метод, который, в свою очередь, закрывает все окна браузера и корректно завершает сеанс WebDriver.driver.dispose
- Как упоминалось ранее, это внутренний метод WebDriver, который был отброшен в соответствии с другим ответом - Требуется проверка. Этот метод действительно не имеет прецедента в обычном рабочем процессе тестирования, так как любой из предыдущих методов должен работать для большинства случаев использования.Объяснение варианта использования: вы должны использовать
driver.quit
всякий раз, когда вы хотите завершить программу. Он закроет все открытые окна браузера и завершит сеанс WebDriver. Если вы не используетеdriver.quit
в конце программы, сеанс WebDriver не закроется должным образом, и файлы не будут удалены из памяти. Это может привести к ошибкам утечки памяти.Выше объяснение должно объяснить разницу между
driver.close
иdriver.quit
методами в WebDriver. Я надеюсь, что вы найдете это полезным.На следующем сайте есть несколько полезных советов по тестированию селена: Ссылка
источник
quit()
: Выходит из этого драйвера, закрывая все связанные окна, которые были открыты.close()
: Закрыть текущее окно, выйдя из браузера, если это последнее открытое окно.источник
close (): - Предположим, что вы открыли несколько окон браузера с одним и тем же экземпляром драйвера, теперь вызов close () для экземпляра драйвера закроет текущее окно, на которое указывает экземпляр драйвера. Но экземпляр драйвера все еще остается в памяти и может использоваться для обработки других открытых окон браузера.
quit (): - Если вы вызываете quit () для экземпляра драйвера и у вас открыто одно или несколько окон браузера, он закроет все открытые окна браузера, а экземпляр драйвера будет удален, т.е. удален из памяти. Так что теперь вы не можете использовать этот экземпляр драйвера для выполнения других операций после вызова quit (). Если вы сделаете это, вы получите исключение.
dispose (): - Я не думаю, что есть метод dispose для экземпляра WebDriver.
Вы можете перейти к этой официальной ссылке для ознакомления.
источник
Основываясь на проблеме с Github из PhantomJS, quit () не завершает процесс PhantomJS. Вы должны использовать:
ссылка на сайт
источник
close () - это команда webdriver, которая закрывает окно браузера, которое в данный момент находится в фокусе. Несмотря на знакомое название для этого метода,
WebDriver
никак не реализоватьAutoCloseable
интерфейс .В процессе автоматизации, если открыто более одного окна браузера, команда close () закроет только текущее окно браузера, которое в данный момент находится в фокусе. Остальные окна браузера не будут закрыты. Следующий код может быть использован для закрытия текущего окна браузера:
quit () - это команда webdriver, которая вызывает метод driver.dispose, который, в свою очередь, закрывает все окна браузера и завершает сеанс WebDriver. Если мы не используем quit () в конце программы, сеанс WebDriver не будет закрыт должным образом и файлы не будут удалены из памяти. Это может привести к ошибкам утечки памяти.
Если в процессе автоматизации открывается только одно окно браузера, команды close () и quit () работают одинаково. Оба будут различаться по своим функциям, если во время автоматизации открыто более одного окна браузера.
Для выше Ref: нажмите здесь
Dispose Команда Dispose () должна вызвать Quit (), и, похоже, это так. Тем не менее, он также имеет ту же проблему в том, что любые последующие действия блокируются до тех пор, пока PhantomJS не будет закрыт вручную.
Ссылка Ссылка
источник
Разница между driver.close () и driver.quit ()
driver.close - закрывает окно браузера, на котором установлен фокус.
driver.quit - в основном он вызывает метод driver.dispose, который, в свою очередь, закрывает все окна браузера и корректно завершает сеанс WebDriver.
источник
Selenium WebDriver
WebDriver.Close()
Этот метод используется для закрытия текущего открытого окна. Он закрывает текущее открытое окно, на котором сосредоточен драйвер.WebDriver.Quit()
Этот метод используется для уничтожения экземпляра WebDriver. Он закрывает все окна браузера, связанные с этим драйвером, и безопасно завершает сеанс. WebDriver.Quit () вызывает Dispose.WebDriver.Dispose()
Этот метод закрывает все окна браузера и безопасно завершает сеансисточник
Насколько я понимаю
driver.close();
, закроет текущий браузер иdriver.quit();
прекратит работу всего браузера.источник