क्षमताएं और ChromeOptions

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

WebDriver language API, 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);

सेलेनियम के वर्शन 3.6.0 के बाद से, Java में ChromeOptions क्लास, Capabilities इंटरफ़ेस को भी लागू करती है. इसकी मदद से, ऐसी अन्य WebDriver सुविधाएं तय की जा सकती हैं जो ChromeDriver से जुड़ी नहीं हैं.

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)

रूबी

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 के शुरू होने के बाद लागू होंगी. अगर बाद वाला विकल्प इस्तेमाल किया जाता है, तो Chrome के लिए user-data-dir कमांड लाइन स्विच का इस्तेमाल करके, यह बताया जा सकता है कि किस प्रोफ़ाइल का इस्तेमाल करना है:

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

आप Chrome को (कमांड-लाइन पर या ChromeDriver पर) चलाकर अपनी कस्टम प्रोफ़ाइल बना सकते हैं. ऐसा करने के लिए, user-data-dir स्विच को किसी नई डायरेक्ट्री पर सेट करें. अगर पाथ मौजूद नहीं है, तो Chrome तय की गई जगह पर एक नई प्रोफ़ाइल बनाएगा. इसके बाद, प्रोफ़ाइल की सेटिंग में अपने हिसाब से बदलाव किया जा सकता है. साथ ही, ChromeDriver आने वाले समय में प्रोफ़ाइल का इस्तेमाल कर सकता है. यह देखने के लिए कि Chrome किस प्रोफ़ाइल का इस्तेमाल कर रहा है, ब्राउज़र में 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, डाउनलोड करने के लिए कुछ डायरेक्ट्री इस्तेमाल करने की अनुमति नहीं देता. खास तौर पर, डाउनलोड डायरेक्ट्री के तौर पर डेस्कटॉप फ़ोल्डर का इस्तेमाल नहीं किया जा सकता. Linux पर, डाउनलोड करने के लिए होम डायरेक्ट्री का भी इस्तेमाल नहीं किया जा सकता. क्योंकि निषिद्ध डायरेक्ट्री की सटीक सूची में बदलाव हो सकता है, इसलिए यह सुझाव दिया जाता है कि आप एक ऐसी डायरेक्ट्री का इस्तेमाल करें जिसका सिस्टम के लिए कोई विशेष मतलब नहीं है.
  • ChromeDriver, डाउनलोड पूरा होने का इंतज़ार नहीं करता. अगर आप ड्राइवर.quit() को जल्द ही कॉल करते हैं, तो हो सकता है कि डाउनलोड पूरा होने से पहले ही Chrome बंद हो जाए.
  • रिलेटिव पाथ हमेशा काम नहीं करते हैं. सबसे अच्छे नतीजे पाने के लिए, इसके बजाय पूरा पाथ इस्तेमाल करें.
  • Windows पर, पाथ सेपरेटर के तौर पर "" का इस्तेमाल करें. Windows पर, "/" का इस्तेमाल करना सही नहीं है.
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-DR=/tmp/temp_profile']). Chrome के तर्कों की सूची यहां देखें.
binary स्ट्रिंग   इस्तेमाल करने के लिए एक्ज़ीक्यूटेबल Chrome का पाथ (Mac OS X पर, यह सिर्फ़ ऐप्लिकेशन ही नहीं, बल्कि असल बाइनरी होनी चाहिए. जैसे, '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome')
extensions स्ट्रिंग की सूची   स्टार्टअप पर इंस्टॉल किए जाने वाले Chrome एक्सटेंशन की सूची. सूची का हर आइटम, Base-64 कोड में बदला गया पैक Chrome एक्सटेंशन (.crx) होना चाहिए
localState शब्दकोश   हर एंट्री वाली डिक्शनरी, जिसमें प्राथमिकता का नाम और उसकी वैल्यू शामिल होती है. ये प्राथमिकताएं, उपयोगकर्ता के डेटा फ़ोल्डर में मौजूद लोकल स्टेट फ़ाइल पर लागू होती हैं.
prefs शब्दकोश   हर एंट्री वाली डिक्शनरी, जिसमें प्राथमिकता का नाम और उसकी वैल्यू शामिल होती है. ये प्राथमिकताएं सिर्फ़ उस उपयोगकर्ता की प्रोफ़ाइल पर लागू होती हैं जिसका इस्तेमाल किया जा रहा है. उदाहरणों के लिए, Chrome की उपयोगकर्ता डेटा डायरेक्ट्री में 'प्राथमिकताएं' फ़ाइल देखें.
detach boolean गलत गलत होने पर, ChromeDriver को बंद करने पर Chrome से बाहर निकल जाएगा. भले ही, सेशन बंद हो. अगर वैल्यू सही है, तो Chrome को सिर्फ़ तब बंद किया जा सकता है, जब सेशन को बंद किया गया हो या बंद किया गया हो. ध्यान दें, अगर सही है और सेशन बंद नहीं होता है, तो ChromeDriver उस अस्थायी उपयोगकर्ता डेटा डायरेक्ट्री को खाली नहीं कर सकता जिसका इस्तेमाल Chrome इंस्टेंस में किया जा रहा है.
debuggerAddress स्ट्रिंग
Chrome डीबगर सर्वर का पता, जिससे कनेक्ट करना है. यह <hostname/ip:port> के फ़ॉर्मैट में होता है, जैसे कि '127.0.0.1:38947'
excludeSwitches स्ट्रिंग की सूची   Chrome को शुरू करते समय, डिफ़ॉल्ट रूप से जिस ChromeDriver पास होता है उसे बाहर रखने के लिए, Chrome कमांड लाइन स्विच की सूची. स्विच के आगे -- का इस्तेमाल न करें.
minidumpPath  स्ट्रिंग   Chrome मिनीडंप स्टोर करने के लिए डायरेक्ट्री . (सिर्फ़ Linux पर काम करता है.)
mobileEmulation शब्दकोश   एक डिक्शनरी, जिसमें “deviceName” की वैल्यू हो या “deviceMetrics” और “userAgent” की वैल्यू हों. ज़्यादा जानकारी के लिए, मोबाइल एम्युलेशन पढ़ें.
perfLoggingPrefs शब्दकोश   एक वैकल्पिक शब्दकोश, जो परफ़ॉर्मेंस लॉग करने से जुड़ी प्राथमिकताओं के बारे में बताता है. ज़्यादा जानकारी के लिए नीचे देखें.
windowTypes स्ट्रिंग की सूची   विंडो हैंडल की सूची में, विंडो के टाइप की सूची दिखेगी. <webview> एलिमेंट को ऐक्सेस करने के लिए, इस सूची में "वेबव्यू" शामिल करें.

perfLoggingPrefs ऑब्जेक्ट

PerfLoggingPrefs डिक्शनरी का फ़ॉर्मैट नीचे दिया गया है (सभी कुंजियां ज़रूरी नहीं हैं):

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

वापस दी गई क्षमताएं

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

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