इनमें क्या अंतर है
Webdriver.Close()Webdriver.Quit()Webdriver.Dispose()
कौन सा इस्तेमाल किया जाए और कब?
इनमें क्या अंतर है
Webdriver.Close()Webdriver.Quit()Webdriver.Dispose()कौन सा इस्तेमाल किया जाए और कब?
जवाबों:
यह एक अच्छा सवाल है जब मैंने लोगों को क्लोज़ () का उपयोग करते देखा है जब उन्हें नहीं करना चाहिए। मैंने सेलेनियम क्लाइंट और वेबड्राइवर सी # बाइंडिंग के लिए स्रोत कोड में देखा और निम्नलिखित पाया।
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() - मुझे इस विधि की जानकारी नहीं है।
Quitऔर Disposeविधियों को एक दूसरे के लिए समानार्थक होना चाहिए। दूसरे शब्दों में, Quitकॉल Dispose।
driver.closeऔर driver.quitसेलेनियम वेबड्राइवर में ब्राउज़र सत्र को बंद करने के दो अलग-अलग तरीके हैं। दोनों को समझना और यह जानना कि प्रत्येक विधि का उपयोग करना आपके परीक्षण के निष्पादन में महत्वपूर्ण है। इसलिए, मैंने इन दोनों तरीकों पर कुछ प्रकाश डालने की कोशिश की है।
driver.close- यह विधि उस ब्राउज़र विंडो को बंद कर देती है जिस पर ध्यान केंद्रित किया जाता है। इस पद्धति के लिए परिचित नाम के बावजूद, इंटरफ़ेस को लागू नहींWebDriver करता है ।AutoCloseable
driver.quit- यह विधि मूल रूप से driver.disposeअब एक आंतरिक विधि कहलाती है जो बदले में सभी ब्राउज़र विंडो को बंद कर देती है और WebDriver सत्र को शान से समाप्त करती है।
driver.dispose- जैसा कि पहले उल्लेख किया गया है, वेबड्राइवर की एक आंतरिक विधि है जो चुपचाप एक और उत्तर के अनुसार गिरा दी गई है - सत्यापन की आवश्यकता है। यह विधि वास्तव में एक सामान्य परीक्षण वर्कफ़्लो में उपयोग-मामला नहीं है क्योंकि पिछले विधियों में से अधिकांश का उपयोग मामलों के लिए करना चाहिए।
स्पष्टीकरण उपयोग मामला: driver.quitजब भी आप कार्यक्रम को समाप्त करना चाहते हैं, तब आपको इसका उपयोग करना चाहिए । यह सभी खोले गए ब्राउज़र विंडो को बंद कर देगा और वेबड्राइवर सत्र को समाप्त कर देगा। यदि आप driver.quitप्रोग्राम के अंत में उपयोग नहीं करते हैं , तो वेबड्राइवर सत्र ठीक से बंद नहीं होगा और मेमोरी से फाइलें क्लियर नहीं होंगी। यह स्मृति रिसाव त्रुटियों में परिणाम हो सकता है।
उपरोक्त विवरण को WebDriver में अंतर driver.closeऔर driver.quitविधियों के बीच का अंतर बताना चाहिए । मुझे उम्मीद है कि आप इसे उपयोगी पाएँ।
निम्नलिखित वेबसाइट में सेलेनियम परीक्षण पर कुछ अच्छे सुझाव दिए गए हैं: लिंक
quit(): इस ड्राइवर को छोड़ देता है, जो खुली हुई हर खिड़की को बंद करता है।
close() : वर्तमान विंडो खुली होने पर ब्राउज़र को छोड़ कर वर्तमान विंडो बंद करें।
close (): - मान लीजिए कि आपने एक ही ड्राइवर उदाहरण के साथ कई ब्राउज़र विंडो खोली हैं, अब ड्राइवर इंस्टेंस पर कॉलिंग () बंद हो जाएगी और ड्राइवर की ओर इशारा की गई वर्तमान विंडो बंद हो जाएगी। लेकिन ड्राइवर का उदाहरण अभी भी मेमोरी में रहता है और इसका उपयोग अन्य ओपन ब्राउज़र विंडो को संभालने के लिए किया जा सकता है।
छोड़ दिया (): - यदि आप ड्राइवर के उदाहरण पर छोड़ें () कहते हैं और एक या अधिक ब्राउज़र विंडो खुली हैं, तो यह सभी खुली हुई ब्राउज़र विंडो को बंद कर देगा और ड्राइवर का उदाहरण कचरा एकत्र कर लिया जाएगा अर्थात मेमोरी से हटा दिया जाएगा। इसलिए अब आप इस ड्राइवर का उपयोग उस पर कॉल () छोड़ने के बाद अन्य ऑपरेशन करने के लिए नहीं कर सकते हैं। यदि आप ऐसा करते हैं तो यह एक अपवाद फेंक देगा।
डिस्पोज़ (): - मुझे नहीं लगता कि वेबड्राइवर उदाहरण के लिए डिस्पोज़ विधि है।
आप संदर्भ के लिए इस सेलेनियम आधिकारिक जावा डॉक्टर लिंक पर जा सकते हैं ।
बंद () एक वेबड्राइवर कमांड है जो ब्राउज़र विंडो को बंद करता है जो वर्तमान में फोकस में है। इस पद्धति के लिए परिचित नाम के बावजूद, इंटरफ़ेस को लागू नहींWebDriver करता हैAutoCloseable ।
स्वचालन प्रक्रिया के दौरान, यदि एक से अधिक ब्राउज़र विंडो खोली जाती हैं, तो क्लोज़ () कमांड केवल वर्तमान ब्राउज़र विंडो को बंद कर देगा जो उस समय फोकस कर रहा है। शेष ब्राउज़र विंडो बंद नहीं होंगी। वर्तमान ब्राउज़र विंडो बंद करने के लिए निम्न कोड का उपयोग किया जा सकता है:
छोड़ने () एक वेबड्राइवर कमांड है जो ड्राइवर.डिजाइन विधि को कॉल करता है, जो बदले में सभी ब्राउज़र विंडो को बंद करता है और वेबड्राइवर सत्र को समाप्त करता है। यदि हम प्रोग्राम के अंत में छोड़ें () का उपयोग नहीं करते हैं, तो वेबड्राइवर सत्र ठीक से बंद नहीं किया जाएगा और मेमोरी बंद नहीं की जाएगी। यह स्मृति रिसाव त्रुटियों में परिणाम हो सकता है।
यदि स्वचालन प्रक्रिया केवल एक ब्राउज़र विंडो खोलती है, तो बंद () और छोड़ें () कमांड उसी तरह से काम करती हैं। स्वचालन के दौरान खोले गए एक से अधिक ब्राउज़र विंडो होने पर दोनों अपनी कार्यक्षमता में भिन्न होंगे।
उपरोक्त रेफरी के लिए: यहां क्लिक करें
डिस्पोज़ कमांड डिसपोज़ () को क्विट () कॉल करना चाहिए, और ऐसा प्रतीत होता है कि यह करता है। हालाँकि, इसमें भी यही समस्या है कि किसी भी बाद की कार्रवाई तब तक अवरुद्ध है जब तक कि फैंटम जेएस मैन्युअल रूप से बंद नहीं हो जाता।
रेफरी लिंक
Driver.close () और driver.quit () के बीच अंतर
Driver.close - यह ब्राउज़र विंडो को बंद करता है, जिस पर फ़ोकस सेट किया गया है।
Driver.quit - यह मूल रूप से Driver.dispose विधि को कॉल करता है, जो बदले में सभी ब्राउज़र विंडो को बंद कर देता है और WebDriver सेशन को समाप्त करता है।
सेलेनियम वेबड्राइवर
WebDriver.Close()इस पद्धति का उपयोग वर्तमान खुली खिड़की को बंद करने के लिए किया जाता है। यह वर्तमान खुली खिड़की को बंद कर देता है जिस पर चालक का ध्यान केंद्रित है।
WebDriver.Quit()इस विधि का उपयोग WebDriver की आवृत्ति को नष्ट करने के लिए किया जाता है। यह उस ड्राइवर से जुड़े सभी ब्राउज़र विंडोज को बंद कर देता है और सुरक्षित रूप से सत्र को समाप्त कर देता है। WebDriver.Quit () कॉल डिस्पोज़।
WebDriver.Dispose() यह विधि सभी ब्राउज़र विंडो को बंद कर देती है और सत्र को सुरक्षित रूप से समाप्त कर देती है