এই মধ্যে পার্থক্য কি
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();
}
সংক্ষেপে নিশ্চিত করুন যে প্রোগ্রামটি প্রস্থান করার আগে প্রস্থান () বা নিষ্পত্তি () ডাকা হয়েছে এবং আপনি কী করছেন সে সম্পর্কে নিশ্চিত না হলে ক্লোজ () পদ্ধতিটি ব্যবহার করবেন না।
দ্রষ্টব্য
আমার ভিএম হার্ডড্রাইভের জায়গা থেকে কেন চালাচ্ছিল তার সাথে সম্পর্কিত সমস্যাটি বের করার চেষ্টা করার সময় আমি এই প্রশ্নটি পেয়েছি। একটি ব্যতিক্রম দেখা যাচ্ছে যার ফলে প্রতিটি রান বলা হবে না বা প্রস্থান () বা ডিসপোজ () করা হবে যার ফলে অ্যাপডাটা ফোল্ডারটি হার্ড ড্রাইভ পূরণ করেছে fill সুতরাং আমরা প্রস্থান () পদ্ধতিটি সঠিকভাবে ব্যবহার করছিলাম তবে কোডটি অ্যাক্সেসযোগ্য ছিল। সংক্ষিপ্তসারটি নিশ্চিত করুন যে সমস্ত কোড পাথ ব্যতিক্রমী নিরাপদ নিদর্শনগুলি ব্যবহার করে বা আইডিস্পোজেবল বাস্তবায়ন করে আপনার পরিচালনা ব্যবস্থা অবহিত অবজেক্টগুলি পরিষ্কার করবে
এছাড়াও
রিমোটড্রাইভার কলিং প্রস্থান () বা ডিসপোজ () এর ক্ষেত্রে সেলেনিয়াম সার্ভারে সেশনটি বন্ধ করে দেবে। সেশনটি বন্ধ না হলে সেই সেশনের লগ ফাইলগুলি মেমরিতে থাকবে।
Quit()
একটি পুনঃচালনা হয়Dispose()
Close()
- এটি বর্তমানে ব্রাউজার বা পৃষ্ঠাটি বন্ধ করতে ব্যবহৃত হয় যা ফোকাস করছে।
Quit()
- এটি ওয়েব ড্রাইভার ইনস্ট্যান্সটি বন্ধ করতে বা ওয়েব ড্রাইভারের ঘটনাটি ধ্বংস করতে ব্যবহৃত হয় (সমস্ত উইন্ডো বন্ধ করুন)।
Dispose()
- আমি এই পদ্ধতি সম্পর্কে অবগত নই।
Quit
এবং Dispose
পদ্ধতিগুলি একে অপরের প্রতিশব্দ হওয়া উচিত। অন্য কথায়, Quit
কল Dispose
।
driver.close
এবং driver.quit
সেলেনিয়াম ওয়েবড্রাইভারে ব্রাউজার সেশনটি বন্ধ করার জন্য দুটি ভিন্ন পদ্ধতি। উভয়টি বোঝা এবং প্রতিটি পদ্ধতি কখন ব্যবহার করতে হয় তা আপনার পরীক্ষার কার্যকারণে গুরুত্বপূর্ণ। অতএব, আমি এই দুটি পদ্ধতিতে কিছুটা আলোকপাত করার চেষ্টা করেছি।
driver.close
- এই পদ্ধতিটি ব্রাউজার উইন্ডোটি বন্ধ করে দেয় যার উপরে ফোকাস সেট করা আছে। এই পদ্ধতির পরিচিত নাম থাকা সত্ত্বেও ইন্টারফেসটি প্রয়োগ WebDriver
করে না ।AutoCloseable
driver.quit
- এই পদ্ধতিটি মূলত driver.dispose
একটি এখন অভ্যন্তরীণ পদ্ধতি কল করে যা ফলস্বরূপ সমস্ত ব্রাউজার উইন্ডো বন্ধ করে দেয় এবং ওয়েবড্রাইভার অধিবেশনকে নিখুঁতভাবে শেষ করে।
driver.dispose
- পূর্বে উল্লিখিত হিসাবে, ওয়েবড্রাইভারের একটি অভ্যন্তরীণ পদ্ধতি যা অন্য উত্তর অনুসারে নিঃশব্দে ফেলে দেওয়া হয়েছে - যাচাইকরণের প্রয়োজন। আগের পদ্ধতিগুলির মধ্যে যে কোনওটি বেশিরভাগ ব্যবহারের ক্ষেত্রে কাজ করা উচিত কারণ এই পদ্ধতির কোনও সাধারণ পরীক্ষার ওয়ার্কফ্লোতে সত্যই ব্যবহারের ক্ষেত্র নেই।
ব্যাখ্যার ব্যবহারের ক্ষেত্রে: আপনি driver.quit
যখনই প্রোগ্রামটি শেষ করতে চান আপনার ব্যবহার করা উচিত । এটি সমস্ত খোলা ব্রাউজার উইন্ডোজ বন্ধ করবে এবং ওয়েবড্রাইভার সেশনটি সমাপ্ত করবে। আপনি যদি driver.quit
প্রোগ্রামটির শেষে ব্যবহার না করেন তবে ওয়েবড্রাইভার সেশনটি সঠিকভাবে বন্ধ হবে না এবং ফাইলগুলি মেমরি থেকে সাফ হবে না। এর ফলে মেমরি ফাঁস ত্রুটি হতে পারে।
উপরোক্ত ব্যাখ্যাটি ওয়েবড্রাইভারের মধ্যে driver.close
এবং driver.quit
পদ্ধতির মধ্যে পার্থক্যটি ব্যাখ্যা করবে । আশা করি এটি আপনার কাজে লাগবে।
নিম্নলিখিত ওয়েবসাইটটিতে সেলেনিয়াম পরীক্ষার জন্য কয়েকটি ভাল পরামর্শ রয়েছে: লিঙ্ক
quit()
: খোলা ছিল এমন প্রতিটি সম্পর্কিত উইন্ডোটি বন্ধ করে এই ড্রাইভারটি ছেড়ে দেয়।
close()
: বর্তমান উইন্ডোটি বন্ধ করুন, ব্রাউজারটি যদি বর্তমানে শেষ উইন্ডোটি খোলা থাকে তবে তা বন্ধ করুন।
বন্ধ (): - ধরুন আপনি একই ড্রাইভার উদাহরণ সহ একাধিক ব্রাউজার উইন্ডো খুলেছেন, এখন ড্রাইভারের জন্য ক্লোজ () কল করা চালকের বর্তমান উইন্ডোটি বন্ধ করবে যা ড্রাইভারের দৃষ্টান্তটি নির্দেশ করা হয়েছে। তবে ড্রাইভারের উদাহরণটি এখনও স্মৃতিতে রয়ে গেছে এবং অন্যান্য উন্মুক্ত ব্রাউজার উইন্ডোগুলি পরিচালনা করতে ব্যবহার করা যেতে পারে।
প্রস্থান (): - আপনি যদি ড্রাইভার ইনস্ট্যান্টে প্রস্থান () কল করেন এবং সেখানে এক বা একাধিক ব্রাউজার উইন্ডোজ খোলা থাকে, এটি সমস্ত উন্মুক্ত ব্রাউজার উইন্ডোজ বন্ধ করে দেবে এবং ড্রাইভারের উদাহরণটি আবর্জনা সংগ্রহ করা হয় যা মেমরি থেকে সরানো হয়। সুতরাং এখন আপনি এই ড্রাইভার উদাহরণটি কল () এ কল করার পরে অন্যান্য ক্রিয়াকলাপ করতে ব্যবহার করতে পারবেন না। আপনি যদি এটি করেন তবে একটি ব্যতিক্রম ছুঁড়ে ফেলা হবে।
নিষ্পত্তি (): - আমি মনে করি না যে কোনও ওয়েবড্রাইভার উদাহরণের জন্য কোনও নিষ্পত্তি পদ্ধতি আছে।
আপনি রেফারেন্সের জন্য এই সেলেনিয়াম অফিসিয়াল জাভা ডক লিঙ্কে যেতে পারেন ।
ফ্যান্টমজেএসের গিথুব সম্পর্কিত একটি সমস্যার ভিত্তিতে, প্রস্থান () ফ্যান্টমজেএস প্রক্রিয়াটি শেষ করে না। আপনার ব্যবহার করা উচিত:
import signal
driver = webdriver.PhantomJS(service_args=service_args)
# Do your work here
driver.service.process.send_signal(signal.SIGTERM)
driver.quit()
ক্লোজ () একটি ওয়েবড্রাইভার কমান্ড যা বর্তমানে ফোকাসে থাকা ব্রাউজার উইন্ডোটি বন্ধ করে দেয়। এই পদ্ধতির পরিচিত নাম থাকা সত্ত্বেও ইন্টারফেসটি প্রয়োগ WebDriver
করে না ।AutoCloseable
অটোমেশন প্রক্রিয়া চলাকালীন, যদি একাধিক ব্রাউজার উইন্ডো খোলা থাকে তবে ক্লোজ () কমান্ডটি কেবলমাত্র বর্তমান ব্রাউজার উইন্ডোটি বন্ধ করবে যা সেই সময়ে ফোকাস করছে। অবশিষ্ট ব্রাউজার উইন্ডোজ বন্ধ করা হবে না। নিম্নলিখিত কোডটি বর্তমান ব্রাউজার উইন্ডোটি বন্ধ করতে ব্যবহার করা যেতে পারে:
ছাড়ুন () একটি ওয়েবড্রাইভার কমান্ড যা ড্রাইভার.ডিসপোজ পদ্ধতিটিকে কল করে যা ফলস্বরূপ সমস্ত ব্রাউজার উইন্ডো বন্ধ করে দেয় এবং ওয়েবড্রাইভার সেশনটি সমাপ্ত করে। প্রোগ্রামের শেষে যদি আমরা প্রস্থান () ব্যবহার না করি, ওয়েবড্রাইভার সেশনটি সঠিকভাবে বন্ধ হবে না এবং ফাইলগুলি মেমরি থেকে সরিয়ে দেওয়া হবে না। এর ফলে মেমরি ফাঁস ত্রুটি হতে পারে।
যদি অটোমেশন প্রক্রিয়াটি কেবল একটি একক ব্রাউজার উইন্ডোটি খোলায়, বন্ধ () এবং প্রস্থান () কমান্ড একই পদ্ধতিতে কাজ করে। অটোমেশনের সময় একাধিক ব্রাউজার উইন্ডো খোলা থাকলে উভয়ই তাদের কার্যকারিতাটিতে পৃথক হবে।
উপরে রেফের জন্য: এখানে ক্লিক করুন
ডিসপোজ কমান্ড ডিসপোজ () কে প্রস্থান () কল করা উচিত এবং এটি প্রদর্শিত হয়। তবে, এতে একই সমস্যা রয়েছে যে ফ্যান্টমজেএস ম্যানুয়ালি বন্ধ না হওয়া পর্যন্ত পরবর্তী কোনও ক্রিয়াকলাপ অবরুদ্ধ করা হয়।
রেফ লিঙ্ক
ড্রাইভার.ক্লোজ () এবং ড্রাইভার.কুইট () এর মধ্যে পার্থক্য
driver.close - এটি ব্রাউজার উইন্ডোটি বন্ধ করে যার উপর ফোকাস সেট করা আছে।
ড্রাইভার.কিউইট - এটি মূলত ড্রাইভার.ডিসপোজ পদ্ধতিটি কল করে যা ঘুরেফিরে সমস্ত ব্রাউজার উইন্ডো বন্ধ করে দেয় এবং ওয়েবড্রাইভার অধিবেশনকে নিখুঁতভাবে শেষ করে।
সেলেনিয়াম ওয়েবড্রাইভার
WebDriver.Close()
এই পদ্ধতিটি বর্তমান উন্মুক্ত উইন্ডোটি বন্ধ করতে ব্যবহৃত হয়। এটি বর্তমান উন্মুক্ত উইন্ডোটি বন্ধ করে যার উপর ড্রাইভারটি ফোকাস করেছে।
WebDriver.Quit()
এই পদ্ধতিটি ওয়েবড্রাইভারের উদাহরণটি ধ্বংস করতে ব্যবহৃত হয়। এটি সেই ড্রাইভারের সাথে সম্পর্কিত সমস্ত ব্রাউজার উইন্ডোজ বন্ধ করে এবং নিরাপদে সেশনটি শেষ করে। ওয়েবড্রাইভার.কুইট () কলটি ডিসপোজ করে।
WebDriver.Dispose()
এই পদ্ধতিটি সমস্ত ব্রাউজার উইন্ডো বন্ধ করে এবং নিরাপদে সেশনটি শেষ করে