Apa perbedaannya?
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
Yang mana yang akan digunakan dan kapan?
Apa perbedaannya?
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
Yang mana yang akan digunakan dan kapan?
Jawaban:
Ini adalah pertanyaan bagus yang saya lihat orang menggunakan Close () padahal seharusnya tidak. Saya mencari kode sumber untuk Selenium Client & WebDriver C # Bindings dan menemukan yang berikut ini.
webDriver.Close()
- Tutup jendela browser yang menjadi fokus driver webDriver.Quit()
- Panggilan Buang () webDriver.Dispose()
Menutup semua jendela browser dan mengakhiri sesi dengan amanKode di bawah ini akan membuang objek driver, mengakhiri sesi dan menutup semua browser yang dibuka selama tes apakah tes gagal atau lulus.
public IWebDriver Driver;
[SetUp]
public void SetupTest()
{
Driver = WebDriverFactory.GetDriver();
}
[TearDown]
public void TearDown()
{
if (Driver != null)
Driver.Quit();
}
Singkatnya memastikan bahwa Berhenti () atau Buang () dipanggil sebelum keluar dari program, dan jangan gunakan metode Tutup () kecuali Anda yakin dengan apa yang Anda lakukan.
Catatan
Saya menemukan pertanyaan ini ketika mencoba untuk mencari tahu masalah terkait mengapa VM saya kehabisan ruang harddisk. Ternyata pengecualian menyebabkan Berhenti () atau Buang () tidak dipanggil setiap kali dijalankan yang kemudian menyebabkan folder appData mengisi hard drive. Jadi kami menggunakan metode Berhenti () dengan benar tetapi kode itu tidak dapat dijangkau. Ringkasan memastikan semua jalur kode akan membersihkan objek yang tidak dikelola dengan menggunakan pola aman pengecualian atau menerapkan IDisposable
Juga
dalam kasus panggilan RemoteDriver Berhenti () atau Buang () juga akan menutup sesi di Server Selenium. Jika sesi tidak ditutup file log untuk sesi itu tetap ada dalam memori.
Quit()
adalah redirect keDispose()
Close()
- Digunakan untuk menutup browser atau halaman saat ini yang memiliki fokus.
Quit()
- Digunakan untuk mematikan instance driver web atau menghancurkan instance driver web (Tutup semua jendela).
Dispose()
- Saya tidak mengetahui metode ini.
Quit
dan Dispose
metode harus sinonim satu sama lain. Dengan kata lain, Quit
panggilan Dispose
.
driver.close
dan driver.quit
dua metode berbeda untuk menutup sesi browser di Selenium WebDriver. Memahami keduanya dan mengetahui kapan harus menggunakan setiap metode adalah penting dalam pelaksanaan pengujian Anda. Karena itu, saya telah mencoba menjelaskan kedua metode ini.
driver.close
- Metode ini menutup jendela browser tempat fokus diatur. Meskipun nama akrab untuk metode ini, WebDriver
tidak tidak melaksanakan AutoCloseable
antarmuka .
driver.quit
- Metode ini pada dasarnya memanggil driver.dispose
metode sekarang internal yang pada gilirannya menutup semua jendela browser dan mengakhiri sesi WebDriver dengan anggun.
driver.dispose
- Seperti disebutkan sebelumnya, adalah metode internal WebDriver yang telah diam-diam dijatuhkan sesuai dengan jawaban lain - Verifikasi diperlukan. Metode ini benar-benar tidak memiliki use-case dalam alur kerja tes normal karena salah satu metode sebelumnya harus bekerja untuk sebagian besar use case.
Penjelasan use case: Anda harus menggunakan driver.quit
kapan pun Anda ingin mengakhiri program. Ini akan menutup semua jendela browser yang terbuka dan mengakhiri sesi WebDriver. Jika Anda tidak menggunakan driver.quit
di akhir program, sesi WebDriver tidak akan menutup dengan benar dan file tidak akan dihapus dari memori. Ini dapat menyebabkan kesalahan kebocoran memori.
Penjelasan di atas harus menjelaskan perbedaan antara driver.close
dan driver.quit
metode di WebDriver. Saya harap Anda menemukannya bermanfaat.
Situs web berikut memiliki beberapa tips bagus tentang pengujian selenium: Tautan
quit()
: Keluar dari driver ini, tutup setiap jendela terkait yang terbuka.
close()
: Tutup jendela saat ini, keluar dari browser jika itu jendela terakhir saat ini terbuka.
close (): - Misalkan Anda telah membuka banyak jendela browser dengan instance driver yang sama, sekarang memanggil close () pada instance driver akan menutup jendela saat ini yang ditunjukkan oleh instance driver. Tetapi instance driver masih tetap ada dalam memori dan dapat digunakan untuk menangani jendela browser lain yang terbuka.
quit (): - Jika Anda memanggil exit () pada instance driver dan ada satu atau lebih jendela browser yang terbuka, itu akan menutup semua jendela browser yang terbuka dan instance driver adalah sampah yang dikumpulkan yaitu dihapus dari memori. Jadi sekarang Anda tidak dapat menggunakan contoh driver ini untuk melakukan operasi lain setelah panggilan berhenti () di atasnya. Jika Anda melakukannya akan mengeluarkan Exception.
dispose (): - Saya rasa tidak ada metode dispose untuk instance WebDriver.
Anda dapat pergi ke tautan java doc resmi selenium ini untuk referensi.
Berdasarkan masalah pada Github dari PhantomJS, berhenti () tidak menghentikan proses PhantomJS. Kamu harus menggunakan:
import signal
driver = webdriver.PhantomJS(service_args=service_args)
# Do your work here
driver.service.process.send_signal(signal.SIGTERM)
driver.quit()
close () adalah perintah webdriver yang menutup jendela browser yang saat ini sedang dalam fokus. Meskipun nama akrab untuk metode ini, WebDriver
tidak tidak melaksanakan AutoCloseable
antarmuka .
Selama proses otomatisasi, jika ada lebih dari satu jendela browser dibuka, maka perintah close () hanya akan menutup jendela browser saat ini yang memiliki fokus pada saat itu. Jendela browser yang tersisa tidak akan ditutup. Kode berikut dapat digunakan untuk menutup jendela browser saat ini:
quit () adalah perintah webdriver yang memanggil metode driver.dispose, yang pada gilirannya menutup semua jendela browser dan mengakhiri sesi WebDriver. Jika kita tidak menggunakan berhenti () di akhir program, sesi WebDriver tidak akan ditutup dengan benar dan file tidak akan dihapus dari memori. Ini dapat menyebabkan kesalahan kebocoran memori.
Jika proses Otomatisasi hanya membuka satu jendela browser, perintah tutup () dan keluar () bekerja dengan cara yang sama. Keduanya akan berbeda dalam fungsinya ketika ada lebih dari satu jendela browser dibuka selama Otomasi.
Untuk referensi Above: klik di sini
Buang Perintah Buang () harus memanggil Keluar (), dan tampaknya tidak. Namun, ia juga memiliki masalah yang sama dalam hal tindakan selanjutnya diblokir sampai PhantomJS ditutup secara manual.
Tautan Ref
Perbedaan antara driver.close () & driver.quit ()
driver.close - Menutup jendela browser tempat fokus diatur.
driver.quit - Pada dasarnya memanggil metode driver.dispose yang pada gilirannya menutup semua jendela browser dan mengakhiri sesi WebDriver dengan anggun.
Selenium WebDriver
WebDriver.Close()
Metode ini digunakan untuk menutup jendela terbuka saat ini. Itu menutup jendela terbuka saat ini di mana pengemudi memiliki fokus.
WebDriver.Quit()
Metode ini digunakan untuk menghancurkan instance WebDriver. Itu menutup semua Browser Windows yang terkait dengan driver itu dan dengan aman mengakhiri sesi. Panggilan WebDriver.Quit () Buang.
WebDriver.Dispose()
Metode ini menutup semua jendela Browser dan mengakhiri sesi dengan aman