В чем разница между этими
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
Какой из них использовать и когда?
В чем разница между этими
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
Какой из них использовать и когда?
Ответы:
Это хороший вопрос, я видел людей, использующих Close (), когда они не должны. Я посмотрел в исходном коде привязок Selenium Client & WebDriver C # и обнаружил следующее.
webDriver.Close()
- Закройте окно браузера, в котором находится драйвер webDriver.Quit()
- Утилизация вызовов () webDriver.Dispose()
Закрывает все окна браузера и безопасно завершает сеансПриведенный ниже код удалит объект драйвера, завершит сеанс и закроет все браузеры, открытые во время теста, если тест пройден неудачно или пройден.
public IWebDriver Driver;
[SetUp]
public void SetupTest()
{
Driver = WebDriverFactory.GetDriver();
}
[TearDown]
public void TearDown()
{
if (Driver != null)
Driver.Quit();
}
Итак, убедитесь, что 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. Вы должны использовать:
import signal
driver = webdriver.PhantomJS(service_args=service_args)
# Do your work here
driver.service.process.send_signal(signal.SIGTERM)
driver.quit()
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()
Этот метод закрывает все окна браузера и безопасно завершает сеанс