क्षमताएं और 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);

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

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' का इस्तेमाल किया जा सकता है की सुविधा उपलब्ध है. इस सुविधा के बारे में नीचे बताया गया है. अगर बाद वाली प्रोफ़ाइल, तो 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 किस प्रोफ़ाइल का इस्तेमाल कर रहा है, यह देखने के लिए ब्राउज़र में 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 अपने-आप ही इंतज़ार नहीं करता. अगर आपने drive.पॉइंट() को बहुत जल्दी कॉल किया है, तो हो सकता है कि डाउनलोड पूरा होने से पहले ही 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);

ऐसी सुविधाएं जिनके बारे में पता चलता है

स्टैंडर्ड वर्शन के लिए, कृपया Selenium के दस्तावेज़ और W3C WebDriver स्टैंडर्ड देखें ChromeDriver द्वारा स्वीकार की जाने वाली क्षमताएं. यहां हम सिर्फ़ Chrome के लिए बने खास सुविधाएं.

ChromeOptions ऑब्जेक्ट

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

नाम स्ट्रीम किस तरह की है डिफ़ॉल्ट  ब्यौरा 
args  स्ट्रिंग की सूची   Chrome को शुरू करते समय इस्तेमाल किए जाने वाले कमांड-लाइन आर्ग्युमेंट की सूची. किसी संबंधित वैल्यू के साथ आर्ग्युमेंट को '='' से अलग किया जाना चाहिए साइन (उदाहरण के लिए, ['start-maximized', 'user-data-dr=/tmp/temp_profile']). यहां जाएं: यहां देखें.
binary स्ट्रिंग   इस्तेमाल करने के लिए Chrome की एक्ज़ीक्यूटेबल पाथ (Mac OS 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 स्ट्रिंग
कनेक्ट करने के लिए, 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 शब्दकोश में इस तरह का फ़ॉर्मैट है (सभी कुंजियों का इस्तेमाल करना ज़रूरी नहीं है):

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

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

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

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