Яка різниця між ними
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. Якщо сеанс не закритий, файли журналу цього сеансу залишаються в пам'яті.
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 (): - Я не думаю, що існує метод розпорядження для екземпляра WebDriver.
Ви можете перейти до цього офіційного посилання на селен java doc для довідок.
close () - команда webdriver, яка закриває вікно браузера, яке зараз зосереджено. Незважаючи на знайому назву для цього методу, WebDriver
ніяк НЕ реалізувати AutoCloseable
інтерфейс .
Під час процесу автоматизації, якщо відкрито більше одного вікна веб-переглядача, команда close () закриє лише поточне вікно браузера, на яке фокусується на той час. Решта вікон браузера не закриються. Наступний код можна використовувати для закриття поточного вікна браузера:
quit () - команда webdriver, яка викликає метод driver.dispose, який, у свою чергу, закриває всі вікна браузера та припиняє сеанс WebDriver. Якщо ми не будемо використовувати quit () наприкінці програми, сеанс WebDriver не закриється належним чином, а файли не будуть очищені від пам'яті. Це може призвести до помилок у витоку пам'яті.
Якщо процес автоматизації відкриває лише одне вікно браузера, команди close () та quit () працюють однаково. Обидва будуть відрізнятися своєю функціональністю, коли під час автоматизації буде відкрито більше одного вікна браузера.
Для вищезгаданого посилання: натисніть тут
Команда розпорядження Dispose () повинна викликати Quit (), і, здається, це є. Однак у нього є та сама проблема, що будь-які наступні дії блокуються, поки PhantomJS не закриється вручну.
Посилання на посилання
Різниця між driver.close () & driver.quit ()
driver.close - Це закриває вікно браузера, на якому встановлено фокус.
driver.quit - Це, в основному, викликає метод driver.dispose, який, в свою чергу, закриває всі вікна браузера і закінчує сесію WebDriver витончено.
Selenium WebDriver
WebDriver.Close()
Цей метод використовується для закриття поточного відкритого вікна. Він закриває поточне відкрите вікно, на яке драйвер має зосередитися.
WebDriver.Quit()
Цей метод використовується для знищення екземпляра WebDriver. Він закриває всі вікна браузера, пов’язані з цим драйвером, і безпечно закінчує сеанс. WebDriver.Quit () викликає розпорядження.
WebDriver.Dispose()
Цей метод закриває всі вікна браузера і безпечно закінчує сеанс