2015-01-21 5 views
24

मैं इस बारे में बहुत समय बिताता हूं। दिन के अंत में मैंने कई उत्तरों को जोड़ दिया और यह काम करता है। मैं अपना जवाब साझा करता हूं और अगर कोई इसे संपादित करता है या हमें ऐसा करने का आसान तरीका प्रदान करता है तो मैं इसकी सराहना करता हूं।पायथन: सेलेनियम में छवियों को अक्षम करें Google क्रोमड्राइवर

1- Disable images in Selenium Google ChromeDriver में उत्तर जावा में काम करता है। इसलिए हम अजगर में एक ही बात करना चाहिए:

opt = webdriver.ChromeOptions() 
opt.add_extension("Block-image_v1.1.crx") 
browser = webdriver.Chrome(chrome_options=opt) 

2- लेकिन ऐसा करने के लिए कोई सीधा रास्ता है, क्योंकि डाउनलोड करने "ब्लॉक-image_v1.1.crx", एक छोटा सा मुश्किल है। इस उद्देश्य के लिए, https://chrome.google.com/webstore/detail/block-image/pehaalcefcjfccdpbckoablngfkfgfgj

पर आप http://chrome-extension-downloader.com/ पर जा सकते हैं और एक्सटेंशन फ़ाइल डाउनलोड करने में सक्षम होने के लिए एक्सटेंशन यूआरएल पेस्ट कर सकते हैं।

3- फिर आप उपरोक्त कोड का उपयोग उस एक्सटेंशन फ़ाइल के पथ के साथ कर पाएंगे जिसे आपने डाउनलोड किया है।

उत्तर

44

धन्यवाद। यहां छवियों निष्क्रिय करने के लिए एक और तरीका है,

chromeOptions = webdriver.ChromeOptions() 
prefs = {"profile.managed_default_content_settings.images":2} 
chromeOptions.add_experimental_option("prefs",prefs) 
driver = webdriver.Chrome(chrome_options=chromeOptions) 

मैं इसे नीचे पाया:

http://nullege.com/codes/show/[email protected]@[email protected]@fbstalker1.py/56/selenium.webdriver.ChromeOptions.add_experimental_option

+0

यह काम करता है, धन्यवाद। –

0

chrome://settings का उपयोग करें और फिर सेटिंग्स के माध्यम से जाने के लिए एक और तरीका है कि शायद हर किसी के लिए मन में आता है सेलेनियम के साथ मैंने केवल व्यावहारिक जिज्ञासा के लिए इस तरह से शुरुआत की, लेकिन फिर मैंने छाया-जड़ों के तत्वों का जंगल मारा जब आप गतिशील सामग्री के साथ संयुक्त 3 से अधिक छाया रूट तत्व का सामना करते हैं, यह स्पष्ट रूप से अपरिवर्तित करने का एक तरीका है और को स्वचालित करना असंभव है alth शायद कम से कम सैद्धांतिक रूप से संभव हो सकता है कि यह दृष्टिकोण एक मृत अंत की तरह दिखता है, मैं इस जवाब को उदाहरण कोड के साथ छोड़ दूंगा, सिर्फ चुनौती के लिए लुभाने वाले लोगों को विज्ञापन देने के लिए पूरी तरह से सीखने के उद्देश्यों के लिए।। छायांकन और गतिशील परिवर्तन के कारण केवल सामग्री सेटिंग को ढूंढना मुश्किल नहीं था जब आपको लगता है कि बटन इस बिंदु पर क्लिक करने योग्य नहीं है।

driver = webdriver.Chrome() 


def expand_shadow_element(element): 
    shadow_root = driver.execute_script('return arguments[0].shadowRoot', element) 
    return shadow_root 

driver.get("chrome://settings") 
root1 = driver.find_element_by_tag_name('settings-ui') 
shadow_root1 = expand_shadow_element(root1) 

root2 = shadow_root1.find_element_by_css_selector('[page-name="Settings"]') 
shadow_root2 = expand_shadow_element(root2) 

root3 = shadow_root2.find_element_by_id('search') 
shadow_root3 = expand_shadow_element(root3) 

search_button = shadow_root3.find_element_by_id("searchTerm") 
search_button.click() 

text_area = shadow_root3.find_element_by_id('searchInput') 
text_area.send_keys("content settings") 

root0 = shadow_root1.find_element_by_id('main') 
shadow_root0_s = expand_shadow_element(root0) 


root1_p = shadow_root0_s.find_element_by_css_selector('settings-basic-page') 
shadow_root1_p = expand_shadow_element(root1_p) 


root1_s = shadow_root1_p.find_element_by_css_selector('settings-privacy-page') 
shadow_root1_s = expand_shadow_element(root1_s) 

content_settings_div = shadow_root1_s.find_element_by_css_selector('#site-settings-subpage-trigger') 
content_settings = content_settings_div.find_element_by_css_selector("button") 
content_settings.click() 
संबंधित मुद्दे