क्षमताएं और ChromeOptions

क्षमताएं ऐसे विकल्प होते हैं जिनका इस्तेमाल करके, ChromeDriver सेशन को पसंद के मुताबिक बनाया जा सकता है और कॉन्फ़िगर किया जा सकता है. इस पेज पर, ChromeDriver की सभी सुविधाओं और उन्हें इस्तेमाल करने के तरीके के बारे में बताया गया है.

WebDriver भाषा के एपीआई, ChromeDriver को सुविधाएं देने के तरीके उपलब्ध कराते हैं. भाषा के हिसाब से, यह तरीका अलग-अलग हो सकता है. हालांकि, ज़्यादातर भाषाओं में इनमें से एक या दोनों तरीकों का इस्तेमाल किया जाता है:

  1. ChromeOptions क्लास का इस्तेमाल करें. यह Java, Python वगैरह के साथ काम करता है.
  2. DesiredCapabilities क्लास का इस्तेमाल करें. यह Python, Ruby वगैरह के साथ काम करता है. हालांकि, यह Java में भी उपलब्ध है, लेकिन Java में इसका इस्तेमाल नहीं किया जा सकता.

ChromeOptions क्लास का इस्तेमाल करना

ChromeOptions का एक इंस्टेंस बनाया जा सकता है. इसमें, ChromeDriver की खास सुविधाओं को सेट करने के आसान तरीके होते हैं. इसके बाद, ChromeOptions ऑब्जेक्ट को ChromeDriver कन्स्ट्रक्टर में पास किया जा सकता है:

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

Selenium के 3.6.0 वर्शन के बाद से, Java में 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);

DesiredCapabilities का इस्तेमाल करना

DesiredCapabilities का इस्तेमाल करने के लिए, आपको उस सुविधा का नाम और वैल्यू का टाइप पता होना चाहिए. पूरी सूची देखें.

Python

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

Ruby

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

इस्तेमाल के सामान्य उदाहरण

कस्टम प्रोफ़ाइल का इस्तेमाल करना

डिफ़ॉल्ट रूप से, ChromeDriver हर सेशन के लिए एक नई प्रोफ़ाइल बनाता है. आपके पास, अपनी पसंद के मुताबिक सेटिंग सेट करने या सिर्फ़ कस्टम प्रोफ़ाइल का इस्तेमाल करने का विकल्प है. इसे उपयोगकर्ता डेटा डायरेक्ट्री भी कहा जाता है.

अगर कुछ समय के लिए बनाई गई प्रोफ़ाइल का इस्तेमाल किया जा रहा है, तो chrome.prefs सुविधा का इस्तेमाल करके, Chrome के शुरू होने के बाद लागू होने वाली सेटिंग तय की जा सकती हैं. पसंद के मुताबिक बनाई गई प्रोफ़ाइलों के लिए, user-data-dir Chrome कमांड-लाइन स्विच का इस्तेमाल करके, Chrome को यह बताया जा सकता है कि किस प्रोफ़ाइल का इस्तेमाल करना है:

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

अपनी पसंद के मुताबिक प्रोफ़ाइल बनाने के लिए, Chrome को कमांड-लाइन पर या ChromeDriver के साथ चलाएं. इसके लिए, user-data-dir स्विच को किसी नई डायरेक्ट्री पर सेट करें.

अगर पाथ मौजूद नहीं है, तो Chrome बताई गई जगह पर एक नई प्रोफ़ाइल बनाता है. इसके बाद, प्रोफ़ाइल की सेटिंग में बदलाव किया जा सकता है. साथ ही, ChromeDriver आने वाले समय में इस प्रोफ़ाइल का इस्तेमाल कर सकता है. ब्राउज़र में chrome://version खोलें और देखें कि Chrome किस प्रोफ़ाइल का इस्तेमाल कर रहा है.

Chrome को बड़े स्क्रीन साइज़ में शुरू करना

start-maximized स्विच का इस्तेमाल करके, Chrome को ज़्यादा से ज़्यादा साइज़ में खोलें:

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

Chrome के किसी ऐसे एक्सीक्यूटेबल का इस्तेमाल करना जो स्टैंडर्ड लोकेशन में मौजूद न हो

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

डायलॉग विंडो ब्लॉक करना

डिफ़ॉल्ट रूप से, ChromeDriver, Chrome को पॉप-अप विंडो दिखाने की अनुमति देने के लिए कॉन्फ़िगर करता है. अगर आपको पॉप-अप ब्लॉक करने हैं और Chrome को ChromeDriver के कंट्रोल में न होने पर, उसके सामान्य तरीके से काम करने की सुविधा वापस लानी है, तो यह तरीका अपनाएं:

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

डाउनलोड डायरेक्ट्री सेट करना

नीचे दिए गए कोड का इस्तेमाल करके, Chrome को किसी खास डायरेक्ट्री में फ़ाइलें डाउनलोड करने के लिए कॉन्फ़िगर किया जा सकता है. हालांकि, आपको इन बातों का ध्यान रखना चाहिए:

  • Chrome, डाउनलोड करने के लिए कुछ डायरेक्ट्री का इस्तेमाल करने की अनुमति नहीं देता. खास तौर पर, डेस्कटॉप फ़ोल्डर का इस्तेमाल डाउनलोड डायरेक्ट्री के तौर पर नहीं किया जा सकता. Linux पर, डाउनलोड करने के लिए होम डायरेक्ट्री का इस्तेमाल नहीं किया जा सकता. पाबंदी वाली डायरेक्ट्री की सटीक सूची में बदलाव हो सकता है. इसलिए, हमारा सुझाव है कि आप ऐसी यूनीक डायरेक्ट्री का इस्तेमाल करें जिसका सिस्टम के लिए कोई खास मतलब न हो.
  • ChromeDriver, डाउनलोड पूरा होने का इंतज़ार अपने-आप नहीं करता. अगर driver.quit() को बहुत जल्द कॉल किया जाता है, तो हो सकता है कि डाउनलोड पूरा होने से पहले Chrome बंद हो जाए.
  • बेहतर नतीजे पाने के लिए, पूरे पाथ का इस्तेमाल करें. ऐसा इसलिए, क्योंकि रिलेटिव पाथ हमेशा काम नहीं करते.
  • Windows पर, \` as path separators./` का इस्तेमाल न करें.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

पहचानी गई सुविधाएं

ChromeDriver के साथ काम करने वाली स्टैंडर्ड सुविधाओं के बारे में जानने के लिए, Selenium दस्तावेज़ और W3C WebDriver स्टैंडर्ड पढ़ें. यहां, Chrome के लिए उपलब्ध सुविधाओं की सूची दी गई है.

ChromeOptions ऑब्जेक्ट

Chrome के हिसाब से बनी ज़्यादातर सुविधाएं, ChromeOptions ऑब्जेक्ट के ज़रिए एक्सपोज़ की जाती हैं. कुछ भाषाओं में, इन्हें ChromeOptions क्लास की मदद से लागू किया जाता है. दूसरी भाषाओं में, ये चुनी गई सुविधाओं में goog:chromeOptions डिक्शनरी में सेव किए जाते हैं.

नाम टाइप डिफ़ॉल्ट ब्यौरा
args स्ट्रिंग की सूची    Chrome को शुरू करते समय इस्तेमाल करने के लिए, कमांड-लाइन आर्ग्युमेंट की सूची. किसी वैल्यू से जुड़े आर्ग्युमेंट को '=' चिह्न से अलग किया जाना चाहिए. जैसे, ['start-maximized', 'user-data-dir=/tmp/temp_profile']. Chrome के आर्ग्युमेंट की सूची देखें.
binary स्ट्रिंग   Chrome की एक्ज़िक्यूट की जा सकने वाली फ़ाइल का पाथ.
macOS X पर, यह सिर्फ़ ऐप्लिकेशन नहीं, बल्कि असल बाइनरी होनी चाहिए, जैसे कि /Applications/Google Chrome.app/Contents/MacOS/Google Chrome.
extensions स्ट्रिंग की सूची   Chrome के खुलने पर इंस्टॉल होने वाले एक्सटेंशन की सूची. सूची में मौजूद हर आइटम, base-64 कोड में बदला गया और पैक किया गया Chrome एक्सटेंशन (.crx) होना चाहिए
localState शब्दकोश   एक डिक्शनरी, जिसमें हर एंट्री में प्राथमिकता का नाम और उसकी वैल्यू होती है. ये सेटिंग, उपयोगकर्ता के डेटा फ़ोल्डर में मौजूद लोकल स्टेटस फ़ाइल पर लागू होती हैं.
prefs शब्दकोश   एक डिक्शनरी, जिसमें हर एंट्री में प्राथमिकता का नाम और उसकी वैल्यू होती है. ये सेटिंग, सिर्फ़ इस्तेमाल की जा रही उपयोगकर्ता प्रोफ़ाइल पर लागू होती हैं. उदाहरणों के लिए, Chrome की उपयोगकर्ता डेटा डायरेक्ट्री में 'प्राथमिकताएं' फ़ाइल देखें.
detach बूलियन गलत अगर यह विकल्प 'गलत' पर सेट है, तो ChromeDriver बंद होने पर Chrome भी बंद हो जाता है. भले ही, सेशन बंद हो या नहीं.
अगर इसकी वैल्यू 'सही' है, तो Chrome सिर्फ़ तब बंद होगा, जब सेशन बंद हो जाएगा. अगर यह 'सही' पर सेट है और सेशन बंद नहीं हुआ है, तो ChromeDriver, उपयोगकर्ता के उस डेटा की डायरेक्ट्री को साफ़ नहीं कर सकता जिसका इस्तेमाल, चल रहे Chrome इंस्टेंस में किया जा रहा है.
debuggerAddress स्ट्रिंग 
<hostname/ip:port> फ़ॉर्मैट में, Chrome डीबगर सर्वर का पता. जैसे, '127.0.0.1:38947'
excludeSwitches स्ट्रिंग की सूची    Chrome को शुरू करते समय, ChromeDriver डिफ़ॉल्ट रूप से जो कमांड लाइन स्विच पास करता है उन्हें बाहर रखने के लिए, Chrome के कमांड लाइन स्विच की सूची. स्विच के नाम के आगे -- न जोड़ें.
minidumpPath स्ट्रिंग    Chrome के मिनीडंप को सेव करने के लिए डायरेक्ट्री. (सिर्फ़ Linux पर काम करता है.)
mobileEmulation शब्दकोश   "deviceName" की वैल्यू या "deviceMetrics" और "userAgent" की वैल्यू वाली कोई डिक्शनरी. ज़्यादा जानकारी के लिए, मोबाइल इम्यूलेशन देखें.
perfLoggingPrefs शब्दकोश   यह एक वैकल्पिक डिक्शनरी है, जिसमें परफ़ॉर्मेंस को लॉग करने की प्राथमिकताएं बताई गई हैं. ज़्यादा जानकारी के लिए नीचे देखें.
windowTypes स्ट्रिंग की सूची   विंडो के हैंडल की सूची में दिखने वाली विंडो टाइप की सूची. वेबव्यू एलिमेंट को ऐक्सेस करने के लिए, इस सूची में "वेबव्यू" शामिल करें.
enableExtensionTargets बूलियन गलत Chrome एक्सटेंशन टारगेट के लिए, आत्मनिरीक्षण की सुविधा चालू करें. ChromeDriver में, डिफ़ॉल्ट रूप से एक्सटेंशन टारगेट शामिल नहीं होते. ऐसा Chrome 136 से हुआ है.

perfLoggingPrefs ऑब्जेक्ट

perfLoggingPrefs डिक्शनरी का फ़ॉर्मैट यहां दिया गया है. सभी बटन इस्तेमाल करना ज़रूरी नहीं है:

नाम टाइप डिफ़ॉल्ट ब्यौरा
enableNetwork बूलियन सही नेटवर्क डोमेन से इवेंट इकट्ठा करने हैं या नहीं.
enablePage बूलियन सही पेज के डोमेन से इवेंट इकट्ठा करने हैं या नहीं.
traceCategories स्ट्रिंग (खाली) कॉमा लगाकर अलग की गई, Chrome की ट्रैकिंग कैटगरी की स्ट्रिंग. इन कैटगरी के लिए, ट्रैक इवेंट इकट्ठा किए जाने चाहिए. कोई वैल्यू न डालने या खाली स्ट्रिंग डालने पर, ट्रैकिंग बंद हो जाती है.
bufferUsageReportingInterval धनात्मक पूर्णांक 1000 DevTools के ट्रैक बफ़र के इस्तेमाल से जुड़े इवेंट के बीच के मिलीसेकंड की अनुरोध की गई संख्या. उदाहरण के लिए, अगर यह वैल्यू 1, 000 है, तो DevTools हर सेकंड में एक बार रिपोर्ट करता है कि ट्रेस बफ़र कितना भरा हुआ है. अगर किसी रिपोर्ट से पता चलता है कि बफ़र का इस्तेमाल 100% हो गया है, तो चेतावनी जारी की जाती है.

लौटाए गए आइटम की सुविधाएं

यहां Chrome के लिए उपलब्ध सभी सुविधाओं की सूची दी गई है. दूसरे शब्दों में, यह सूची बताती है कि नया सेशन बनाने पर, ChromeDriver क्या दिखाता है.

नाम टाइप ब्यौरा
chrome.chromedriverVersion स्ट्रिंग ChromeDriver का वर्शन
userDataDir स्ट्रिंग उपयोगकर्ता डेटा डायरेक्ट्री का पाथ, जिसका इस्तेमाल Chrome कर रहा है; ध्यान दें, यह 'chrome' डिक्शनरी में मौजूद है