11

सेलेनियम और सी # के माध्यम से इसका उपयोग करते समय Google क्रोम में छवियों को कैसे अक्षम करता है?सेलेनियम में छवियों को अक्षम करें Google क्रोमड्राइवर

मैंने 6 तरीकों का प्रयास किया है और कोई भी काम नहीं किया है। मैंने this स्टैक ओवरफ्लो प्रश्न पर भी उत्तर देने का प्रयास किया है, हालांकि मुझे लगता है कि इसमें जानकारी पुरानी है।

  • क्रोम चालक: V2.2
  • Chrome संस्करण: V29.0.1547.66 मीटर
  • सेलेनियम: V2.35

सभी प्रयास मैं कर दिया है अपवाद का कारण नहीं है , वे सामान्य रूप से चलाने, लेकिन अभी भी छवियों को प्रदर्शित:

प्रयास 1:

ChromeOptions co = new ChromeOptions(); 
co.AddArgument("--disable-images"); 
IWebDriver driver = new ChromeDriver(co); 

प्रयास 2:

DesiredCapabilities capabilities = DesiredCapabilities.Chrome(); 
capabilities.SetCapability("chrome.switches", new string[1] { "disable-images" }); 

प्रयास 3:

ChromeOptions co = new ChromeOptions(); 
co.AddAdditionalCapability("chrome.switches", new string[1] { "disable-images" }); 

प्रयास 4:

var imageSetting = new Dictionary<string, object>(); 
imageSetting.Add("images", 2); 
Dictionary<string, object> content = new Dictionary<string, object>(); 
content.Add("profile.default_content_settings", imageSetting); 
var prefs = new Dictionary<string, object>(); 
prefs.Add("prefs", content); 
var options = new ChromeOptions(); 
var field = options.GetType().GetField("additionalCapabilities", BindingFlags.Instance | BindingFlags.NonPublic); 
if (field != null) 
{ 
    var dict = field.GetValue(options) as IDictionary<string, object>; 
    if (dict != null) 
     dict.Add(ChromeOptions.Capability, prefs); 
} 

प्रयास 5:

ChromeOptions options = new ChromeOptions(); 
options.AddAdditionalCapability("profile.default_content_settings", 2); 

प्रयास 6:

Dictionary<String, Object> contentSettings = new Dictionary<String, Object>(); 
contentSettings.Add("images", 2); 
Dictionary<String, Object> preferences = new Dictionary<String, Object>(); 
preferences.Add("profile.default_content_settings", contentSettings); 
DesiredCapabilities caps = DesiredCapabilities.Chrome(); 
caps.SetCapability("chrome.prefs", preferences); 
+1

क्या आपने उस प्रश्न में समाधान का प्रयास किया था? आप क्रोमड्राइवर का किस संस्करण का उपयोग कर रहे हैं? कृपया जिस तरीके से आपने कोशिश की है और यह कैसे काम नहीं किया है (अगर यह छवियों को अक्षम नहीं करता है या अगर यह त्रुटि उत्पन्न करता है) तो पोस्ट करें (सटीक कोड)। – Arran

+0

संभावित डुप्लिकेट [सेलेनियम क्रोमड्राइवर में छवियों को अक्षम करें] (http://stackoverflow.com/questions/9433109/disable-images-in-selenium-chromedriver) – jww

उत्तर

7

उपयोग http://chrome-extension-downloader.com/ "ब्लॉक छवि" एक्सटेंशन (https://chrome.google.com/webstore/detail/block-image/pehaalcefcjfccdpbckoablngfkfgfgj?hl=en-GB) डाउनलोड करने के लिए। एक्सटेंशन छवि को पहली जगह डाउनलोड होने से रोकता है।

var options = new ChromeOptions(); 

    //use the block image extension to prevent images from downloading. 
    options.AddExtension("Block-image_v1.0.crx"); 

    var driver = new ChromeDriver(options); 
+1

क्या आपके पास टिप है स्वचालित रूप से प्लगइन को कैसे सक्षम करें? मेरी स्थिति में पेज लोड होने से पहले बटन को क्लिक करना होगा !? – alfonx

+0

हाहा हाँ मैं भी इस समस्या में फंस गया। मुझे नहीं पता कि इसे स्वचालित रूप से कैसे चालू किया जाए:/मैंने बस एक ऐप में एक कंसोल रखा है। मेरे ऐप में रीडकी() मुझे इसे चालू करने का मौका देने के लिए ... सुंदर यहूदी मुझे पता है – Fidel

7

आपकी विधि 1-3 के लिए, मुझे --disable-imageslisted here नामक क्रोम स्विच दिखाई नहीं देता है। तो यदि कोड स्निपेट सही हैं, तो भी इससे कोई फर्क नहीं पड़ता कि वे क्या काम करेंगे। आपको वह स्विच कहां मिला? कोई संदर्भ?

विधियों के लिए 4-6, मुझे लगता है कि आपको this chromdriver issue से विचार मिला है। मुझे नहीं पता कि यह {'profile.default_content_settings': {'images': 2}} अभी भी मान्य है या नहीं, लेकिन आप इसे निम्न कोड (जो मूल रूप से How to set Chrome preferences using Selenium Webdriver .NET binding? का उत्तर था, Martin Devillers द्वारा प्रदान किया गया उत्तर) का प्रयास कर सकता है।

public class ChromeOptionsWithPrefs: ChromeOptions { 
    public Dictionary<string,object> prefs { get; set; } 
} 

public static void Initialize() { 
    var options = new ChromeOptionsWithPrefs(); 
    options.prefs = new Dictionary<string, object> { 
     { "profile.default_content_settings", new Dictionary<string, object>() { "images", 2 } } 
    }; 
    var driver = new ChromeDriver(options); 
} 
+0

धन्यवाद उपयोगकर्ता, यह अच्छी तरह से काम करता है! '- अक्षम छवियों' तर्क फोरम पदों के समूह से आया, जाहिर है काफी पुराना। उदाहरण के लिए: http://productforums.google.com/forum/#!topic/chrome/wAbzmI0IoH8। – Fidel

+0

असल में, यह समाधान छवियों को प्रदर्शित करने से रोकता है। Google क्रोम अभी भी उन्हें डाउनलोड कर रहा है ... – Fidel

+1

@ फिडेल: यह जानकर अच्छा लगा कि यह काम करता है। तो क्या आप वास्तव में छवियों को अक्षम करने के बजाय क्रोम को छवियों को डाउनलोड करने से रोकना चाहते हैं? –

1

मेरा सुझाव है कि आप, एक नया प्रोफ़ाइल बनाने इस प्रोफाइल को अनुकूलित इतना है कि यह छवियों को लोड नहीं है, और स्थापित करने के लिए एक chromeOption के रूप में इस प्रोफ़ाइल का उपयोग: अब निम्न कथन का उपयोग कर इसे लोड करने का मामला है अपने ड्राइवर को ऊपर करो।

देखें: this article

2

मैं सरल समाधान में पता चला।

options.add_argument('--blink-settings=imagesEnabled=false') 

जो भी बिना सिर मोड में काम करता है: यह विचार से Python:Disable images in Selenium Google ChromeDriver

var service = ChromeDriverService.CreateDefaultService(@WebDriverPath); 

var options = net ChromeOptions(); 
options.AddUserProfilePreference("profile.managed_default_content_settings.images", 2); 
IWebDriver Driver = new ChromeDriver(service, options); 
+1

धन्यवाद जेमिन, बहुत अच्छा लग रहा है। क्या यह फ़ाइल को डाउनलोड करने से रोकता है? या यह फ़ाइल को प्रदर्शित होने से रोकता है? – Fidel

+1

आपका स्वागत फिदेल। मैंने अभी तक उस विषय की जांच नहीं की है। मैंने अभी उस समाधान को पाया है। हालांकि मैंने लोडिंग समय की जांच पहले की तुलना में कम थी। मैं बाद में जांच करूंगा और आपको बताऊंगा कि यह कैसे काम करता है। –

+1

अभी यह जवाब देने के लिए खेद है, लेकिन मैंने फिडलर के साथ जांच की है और यह वास्तव में छवियों को डाउनलोड नहीं करता है, बढ़िया! –

8

संदर्भित किया यह आप द्वारा --blink-settings बजाय --disable-images का उपयोग करना चाहिए मेरी समाधान

IWebDriver driver; 
ChromeOptions options = new ChromeOptions(); 
options.AddUserProfilePreference("profile.default_content_setting_values.images", 2); 
driver = new ChromeDriver(options); 
3

है। प्रोफ़ाइल सेट करना हेडलेस मोड में काम नहीं करता है। आप स्क्रीनशॉट करके उसे सत्यापित कर सकते हैं:

driver.get_screenshot_as_file('headless.png') 

नोट: मैं सेलेनियम के साथ अजगर का उपयोग कर रहा था, लेकिन मुझे लगता है कि यह ग # करने के लिए स्थानांतरण करने के लिए आसान होना चाहिए।

+0

यह काम करता है! बहुत धन्यवाद! –

+0

यह सी # के लिए काम करता है अगर किसी को पुष्टि की आवश्यकता है। – LogicDev

संबंधित मुद्दे