ক্ষমতা এবং ChromeOptions

ক্ষমতা হল বিকল্প যা আপনি একটি ChromeDriver সেশন কাস্টমাইজ এবং কনফিগার করতে ব্যবহার করতে পারেন। এই পৃষ্ঠাটি সমস্ত ChromeDriver সমর্থিত ক্ষমতা এবং সেগুলি কীভাবে ব্যবহার করতে হয় তা নথিভুক্ত করে৷

WebDriver ভাষা API গুলি ChromeDriver-এ ক্ষমতাগুলি পাস করার উপায় প্রদান করে৷ সঠিক প্রক্রিয়াটি ভাষার দ্বারা পৃথক হয়, তবে বেশিরভাগ ভাষা নিম্নলিখিত প্রক্রিয়াগুলির একটি বা উভয় ব্যবহার করে:

  1. ChromeOptions ক্লাস ব্যবহার করুন. এটি জাভা, পাইথন ইত্যাদি দ্বারা সমর্থিত।
  2. DesiredCapabilities ক্লাস ব্যবহার করুন। এটি পাইথন, রুবি, ইত্যাদি দ্বারা সমর্থিত৷ এটি জাভাতেও উপলব্ধ, জাভাতে এর ব্যবহার অবমূল্যায়িত৷

ChromeOptions ক্লাস ব্যবহার করে

আপনি ChromeOptions এর একটি উদাহরণ তৈরি করতে পারেন, যাতে ChromeDriver-নির্দিষ্ট ক্ষমতা সেট করার সুবিধাজনক পদ্ধতি রয়েছে। তারপরে আপনি ChromeDriver কনস্ট্রাক্টরে ChromeOptions অবজেক্টটি পাস করতে পারেন:

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

সেলেনিয়াম সংস্করণ 3.6.0 থেকে, জাভাতে ChromeOptions ক্লাস Capabilities ইন্টারফেসও প্রয়োগ করে, যা আপনাকে ChromeDriver-এর জন্য নির্দিষ্ট নয় এমন অন্যান্য WebDriver ক্ষমতা নির্দিষ্ট করতে দেয়।

ChromeOptions options = new ChromeOptions();

// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);

// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Desired Capabilities ব্যবহার করা

DesiredCapabilities ব্যবহার করার জন্য, আপনাকে সক্ষমতার নাম এবং এটির মূল্যের ধরণ জানতে হবে। এখানে সম্পূর্ণ তালিকা দেখুন.

পাইথন

caps = webdriver.DesiredCapabilities.CHROME.copy() 
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

রুবি

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
     "goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

সাধারণ ব্যবহারের ক্ষেত্রে

কাস্টম প্রোফাইল ব্যবহার করুন (যাকে ব্যবহারকারী ডেটা ডিরেক্টরিও বলা হয়)

ডিফল্টরূপে, ChromeDriver প্রতিটি সেশনের জন্য একটি নতুন অস্থায়ী প্রোফাইল তৈরি করবে। কখনও কখনও আপনি বিশেষ পছন্দগুলি সেট করতে চাইতে পারেন বা সম্পূর্ণভাবে একটি কাস্টম প্রোফাইল ব্যবহার করতে পারেন৷ যদি আগেরটি হয়, তাহলে Chrome শুরু হওয়ার পরে যে পছন্দগুলি প্রয়োগ করা হবে তা নির্দিষ্ট করতে আপনি 'chrome.prefs' ক্ষমতা (নীচে পরে বর্ণিত) ব্যবহার করতে পারেন৷ পরেরটি হলে, আপনি user-data-dir ক্রোম কমান্ড-লাইন সুইচ ব্যবহার করে ক্রোমকে কোন প্রোফাইল ব্যবহার করবেন তা বলতে পারেন:

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");

আপনি কিছু নতুন ডিরেক্টরিতে user-data-dir সুইচ সেট করে শুধুমাত্র Chrome (কমান্ড-লাইনে বা ChromeDriver-এর মাধ্যমে) চালিয়ে আপনার নিজস্ব কাস্টম প্রোফাইল তৈরি করতে পারেন। যদি পথটি বিদ্যমান না থাকে, Chrome নির্দিষ্ট স্থানে একটি নতুন প্রোফাইল তৈরি করবে। তারপরে আপনি পছন্দসই প্রোফাইল সেটিংস পরিবর্তন করতে পারেন এবং ChromeDriver ভবিষ্যতে প্রোফাইলটি ব্যবহার করতে পারে৷ ক্রোম কি প্রোফাইল ব্যবহার করছে তা দেখতে ব্রাউজারে chrome://version খুলুন।

Chrome সর্বাধিক শুরু করুন

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

একটি অ-মানক অবস্থানে একটি Chrome এক্সিকিউটেবল ব্যবহার করা

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

ডায়ালগ উইন্ডো ব্লক করুন

ডিফল্টরূপে, ChromeDriver পপ-আপ উইন্ডোর অনুমতি দেওয়ার জন্য Chrome-কে কনফিগার করে। আপনি যদি পপ-আপগুলি ব্লক করতে চান (অর্থাৎ, ChromeDriver দ্বারা নিয়ন্ত্রিত না হলে স্বাভাবিক Chrome আচরণ পুনরুদ্ধার করুন), নিম্নলিখিতগুলি করুন:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

ডাউনলোড ডিরেক্টরি সেট করুন

নিম্নলিখিত কোডটি একটি নির্দিষ্ট ডিরেক্টরিতে ফাইল ডাউনলোড করতে Chrome কনফিগার করতে ব্যবহার করা যেতে পারে। যাইহোক, সচেতন হওয়ার জন্য বেশ কয়েকটি সতর্কতা রয়েছে:

  • Chrome ডাউনলোডের জন্য নির্দিষ্ট ডিরেক্টরি ব্যবহার করার অনুমতি দেয় না। বিশেষ করে, আপনি ডেস্কটপ ফোল্ডারটিকে ডাউনলোড ডিরেক্টরি হিসাবে ব্যবহার করতে পারবেন না। লিনাক্সে, আপনি ডাউনলোডের জন্য হোম ডিরেক্টরিও ব্যবহার করতে পারবেন না। যেহেতু নিষিদ্ধ ডিরেক্টরিগুলির সঠিক তালিকা পরিবর্তন সাপেক্ষে, তাই এটি সুপারিশ করা হয় যে আপনি এমন একটি ডিরেক্টরি ব্যবহার করুন যার সিস্টেমের কোন বিশেষ অর্থ নেই।
  • ChromeDriver স্বয়ংক্রিয়ভাবে ডাউনলোড সম্পূর্ণ হওয়ার জন্য অপেক্ষা করে না। আপনি ড্রাইভার.quit() কে খুব তাড়াতাড়ি কল করলে, ডাউনলোড শেষ হওয়ার আগেই Chrome বন্ধ হয়ে যেতে পারে।
  • আপেক্ষিক পথ সবসময় কাজ করে না। সেরা ফলাফলের জন্য, পরিবর্তে সম্পূর্ণ পথ ব্যবহার করুন।
  • উইন্ডোজে, পাথ বিভাজক হিসাবে "" ব্যবহার করুন। উইন্ডোজে "/" ব্যবহার করা নির্ভরযোগ্য নয়।
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

স্বীকৃত ক্ষমতা

ChromeDriver দ্বারা গৃহীত মানসম্পন্ন ক্ষমতাগুলির জন্য অনুগ্রহ করে সেলেনিয়াম ডকুমেন্টেশন এবং W3C ওয়েবড্রাইভার স্ট্যান্ডার্ড দেখুন৷ এখানে আমরা শুধুমাত্র Chrome-নির্দিষ্ট ক্ষমতা তালিকাভুক্ত করি।

ChromeOptions অবজেক্ট

বেশিরভাগ Chrome-নির্দিষ্ট ক্ষমতা ChromeOptions অবজেক্টের মাধ্যমে প্রকাশ করা হয়। কিছু ভাষায়, এটি ChromeOptions ক্লাস দ্বারা প্রয়োগ করা হয়। অন্যান্য ভাষায়, এগুলি goog:chromeOptions অভিধানের অধীনে কাঙ্ক্ষিত ক্ষমতার মধ্যে সংরক্ষণ করা হয়৷

নাম টাইপ ডিফল্ট বর্ণনা
args স্ট্রিং তালিকা Chrome শুরু করার সময় ব্যবহার করার জন্য কমান্ড-লাইন আর্গুমেন্টের তালিকা। সংশ্লিষ্ট মানের সাথে আর্গুমেন্টগুলিকে '=' চিহ্ন দ্বারা পৃথক করা উচিত (যেমন, ['start-maximized', 'user-data-dir=/tmp/temp_profile'])। Chrome আর্গুমেন্টের একটি তালিকার জন্য এখানে দেখুন।
binary স্ট্রিং ব্যবহারের জন্য এক্সিকিউটেবল ক্রোমের পাথ (ম্যাক ওএস এক্স-এ, এটি প্রকৃত বাইনারি হওয়া উচিত, শুধু অ্যাপ নয়। যেমন, '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome')
extensions স্ট্রিং তালিকা স্টার্টআপে ইনস্টল করার জন্য Chrome এক্সটেনশনগুলির একটি তালিকা৷ তালিকার প্রতিটি আইটেম একটি বেস-64 এনকোডেড প্যাক করা Chrome এক্সটেনশন (.crx) হওয়া উচিত
localState অভিধান পছন্দের নাম এবং এর মান সমন্বিত প্রতিটি এন্ট্রি সহ একটি অভিধান। এই পছন্দগুলি ব্যবহারকারীর ডেটা ফোল্ডারে স্থানীয় রাজ্য ফাইলে প্রয়োগ করা হয়।
prefs অভিধান পছন্দের নাম এবং এর মান সমন্বিত প্রতিটি এন্ট্রি সহ একটি অভিধান। এই পছন্দগুলি শুধুমাত্র ব্যবহার করা ব্যবহারকারী প্রোফাইলে প্রয়োগ করা হয়। উদাহরণের জন্য Chrome এর ব্যবহারকারী ডেটা ডিরেক্টরিতে 'পছন্দগুলি' ফাইলটি দেখুন৷
detach বুলিয়ান মিথ্যা মিথ্যা হলে, সেশন প্রস্থান করা হোক না কেন, ChromeDriver মারা গেলে Chrome বন্ধ হয়ে যাবে। সত্য হলে, সেশনটি প্রস্থান (বা বন্ধ) হলেই Chrome প্রস্থান করা হবে। দ্রষ্টব্য, যদি সত্য হয়, এবং সেশনটি প্রস্থান না করা হয়, ChromeDriver চলমান ক্রোম ইনস্ট্যান্স ব্যবহার করা অস্থায়ী ব্যবহারকারী ডেটা ডিরেক্টরি পরিষ্কার করতে পারে না।
debuggerAddress স্ট্রিং
সংযোগ করার জন্য একটি Chrome ডিবাগার সার্ভারের ঠিকানা, <hostname/ip:port> আকারে, যেমন '127.0.0.1:38947'
excludeSwitches স্ট্রিং তালিকা Chrome শুরু করার সময় ডিফল্টভাবে ChromeDriver পাস বাদ দিতে Chrome কমান্ড লাইনের সুইচের তালিকা। -- এর সাথে সুইচ উপসর্গ করবেন না।
minidumpPath স্ট্রিং ক্রোম মিনিডাম্প সংরক্ষণ করার জন্য ডিরেক্টরি। (শুধুমাত্র লিনাক্সে সমর্থিত।)
mobileEmulation অভিধান "deviceName" এর মান সহ একটি অভিধান অথবা "deviceMetrics" এবং "userAgent" এর মান সহ একটি অভিধান। আরও তথ্যের জন্য মোবাইল এমুলেশন পড়ুন।
perfLoggingPrefs অভিধান একটি ঐচ্ছিক অভিধান যা পারফরম্যান্স লগিং পছন্দগুলি নির্দিষ্ট করে৷ আরও তথ্যের জন্য নীচে দেখুন.
windowTypes স্ট্রিং তালিকা উইন্ডোর ধরনগুলির একটি তালিকা যা উইন্ডো হ্যান্ডেলগুলির তালিকায় প্রদর্শিত হবে। <webview> উপাদানগুলিতে অ্যাক্সেসের জন্য, এই তালিকায় "webview" অন্তর্ভুক্ত করুন।

perfLoggingPrefs অবজেক্ট

perfLoggingPrefs অভিধানে নিম্নলিখিত বিন্যাস রয়েছে (সমস্ত কী ঐচ্ছিক):

নাম টাইপ ডিফল্ট বর্ণনা
enableNetwork বুলিয়ান সত্য নেটওয়ার্ক ডোমেইন থেকে ইভেন্ট সংগ্রহ করবেন কি না।
enablePage বুলিয়ান সত্য পেজ ডোমেইন থেকে ইভেন্ট সংগ্রহ করবেন কি না।
traceCategories স্ট্রিং (খালি) Chrome ট্রেসিং বিভাগের একটি কমা দ্বারা পৃথক করা স্ট্রিং যার জন্য ট্রেস ইভেন্টগুলি সংগ্রহ করা উচিত৷ একটি অনির্দিষ্ট বা খালি স্ট্রিং ট্রেসিং অক্ষম করে।
bufferUsageReportingInterval ধনাত্মক পূর্ণসংখ্যা 1000 DevTools-এর মধ্যে অনুরোধ করা সংখ্যক মিলিসেকেন্ড বাফার ব্যবহারের ইভেন্টগুলি ট্রেস করে৷ উদাহরণস্বরূপ, যদি 1000 হয়, তাহলে প্রতি সেকেন্ডে একবার, DevTools রিপোর্ট করবে যে ট্রেস বাফার কতটা পূর্ণ। যদি একটি রিপোর্ট বাফার ব্যবহার 100% নির্দেশ করে, একটি সতর্কতা জারি করা হবে।

প্রত্যাবর্তিত ক্ষমতা

এটি সমস্ত Chrome-নির্দিষ্ট প্রত্যাবর্তিত ক্ষমতাগুলির একটি তালিকা৷ (অর্থাৎ, আপনি যখন একটি নতুন সেশন তৈরি করেন তখন ChromeDriver কী ফেরত দেয়)

নাম টাইপ বর্ণনা
chrome.chromedriverVersion স্ট্রিং ChromeDriver এর সংস্করণ
userDataDir স্ট্রিং ব্যবহারকারী ডেটা ডিরেক্টরির পথ যা Chrome ব্যবহার করছে; মনে রাখবেন, এটি একটি 'ক্রোম' অভিধানের ভিতরে রয়েছে