6

का उपयोग कर क्रोम एक्सटेंशन लोड करें मैं चाहता हूं कि वेब स्टोर से क्रोम एक्सटेंशन लोड करना है। मैं इसे समझने के लिए बहुत सी खोज करता हूं, लेकिन केवल यह जानना है कि हम स्थानीय मशीन से एक्सटेंशन लोड कर सकते हैं। मुझे सच में आश्चर्य है कि सेलेनियम में वेब स्टोर से या यूआरएल से एक्सटेंशन लोड करने की कार्यक्षमता नहीं है।सेलेनियम

कृपया मुझे बताएं कि मैं क्या कर रहा हूं सेलेनियम का उपयोग कर संभव है?

+0

एक विकल्प है जब आप परीक्षण स्क्रिप्ट चलाते समय वेबस्टोर से क्रैक्स फ़ाइल डाउनलोड करने के लिए जावा का उपयोग करें और फिर डाउनलोड स्क्रिप्ट को chromeoptions में लोड करें। जावा में इंटरनेट से फ़ाइल डाउनलोड करने के कई विकल्प हैं। क्या आपके मामले में दृष्टिकोण स्वीकार्य होगा? – parishodak

+0

हां, यहां तक ​​कि स्टोर से एक्सटेंशन डाउनलोड करना और फिर इसे इंस्टॉल करना भी होगा। लेकिन मुझे यकीन नहीं है कि क्या हम सीआरएक्स फ़ाइल डाउनलोड कर सकते हैं? क्या हमारे पास यूआरएल उपलब्ध हैं? –

उत्तर

7

मुझे यकीन नहीं है कि आप वेबस्टोर से डाउनलोड करने के बारे में विशेष क्यों हैं और फिर क्रोम में इंस्टॉल करें। ,

इंटरनेट से जुड़ा एक कंप्यूटर -साथ विस्तार पृष्ठ से विस्तार स्थापित: विस्तार स्रोत कोड के लिए https://chrome.google.com/webstore/detail/
-Navigate

मैं क्रोम एक्सटेंशन डाउनलोड करने के लिए कुछ कदम पाया। एक्सपी में यह पाया जाता है: सी: \ दस्तावेज़ और सेटिंग्स \\ स्थानीय सेटिंग्स \ अनुप्रयोग डेटा \ Google \ क्रोम \ उपयोगकर्ता डेटा \ डिफ़ॉल्ट \ एक्सटेंशन \
- आपको एक संस्करण फ़ोल्डर देखना चाहिए (यानी "0.0.21_0") । इस फ़ोल्डर को कॉपी करें और उसे उस मशीन पर ले जाएं जिसे आप इंस्टॉल करना चाहते हैं।
कट मशीन पर क्रोम अप ओपन और पाना जाना -> उपकरण -> एक्सटेंशन
क्लिक करें + डेवलपर विकल्प
क्लिक करें 'पैक विस्तार ...' प्रदर्शित करने के लिए और संस्करण चुनें डेवलपर मोड के बगल में रूट निर्देशिका के रूप में फ़ोल्डर। निजी कुंजी फ़ाइल खाली छोड़ दें। यह एक निजी कुंजी के साथ संस्करण फ़ोल्डर में एक .crx फ़ाइल बनाएगा जैसे कि आप डेवलपर थे। ।

--Or--

1- विस्तार में आपकी रुचि है की आईडी जानें विस्तार के विवरण पृष्ठ पर है, यह हो जाएगा कुछ की तरह: bfbmjmiodbnnpllbbbfblcplfjjepjdn के बाद https://chrome.google.com/webstore/detail/

2- किसी भी अन्य ब्राउज़र (Chrome) में चिपकाएं: https://clients2.google.com/service/update2/crx?response=redirect&x=id%3D~~~~%26uc

3- और एक्सटेंशन आईडी के साथ ~~~~ की जगह। आपको एक सीआरएक्स फ़ाइल सहेजने के लिए कहा जाएगा। इस फ़ाइल को क्रोम विंडो में खींचें और इंस्टॉलेशन के साथ आगे बढ़ें।

स्रोत: https://productforums.google.com/forum/#!topic/chrome/g02KlhK12fU

अंत में, ChromeOptions में डाउनलोड किया .crx फ़ाइल का उपयोग विस्तार

ChromeOptions options = new ChromeOptions(); 
options.addExtensions(new File("/path/to/extension.crx")); 
DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
ChromeDriver driver = new ChromeDriver(capabilities); 

स्रोत लोड करने के लिए: https://sites.google.com/a/chromium.org/chromedriver/extensions

+0

आपको पैरिशोडक धन्यवाद। मैंने यह एक जेएस का उपयोग करके किया जो मुझे दिए गए आईडी के लिए एक डाउनलोड यूआरएल लौटाता है। –

+0

मैंने यह एक जेएस का उपयोग करके किया जो मुझे दिए गए आईडी के लिए एक डाउनलोड यूआरएल लौटाता है। मेरा अंतिम लक्ष्य भिन्न एक्सटेंशन से बाहर आने वाले अनुरोधों को रोकना है। इसके लिए मैं अपने दूसरे एक्सटेंशन का उपयोग कर रहा हूं जहां मैं अनुरोध को कैप्चर करने के लिए 'chrome.webRequest.onBeforeRequest' API का उपयोग कर रहा हूं। लेकिन ऐसा लगता है कि क्रोम मेरे हैंडलर में एक्सटेंशन से बाहर आने वाले अनुरोधों को आगे नहीं भेजता है। एक अन्य एपीआई जिसे मैं उपयोग कर सकता हूं वह है 'chrome.devtools.network.onRequestFinished' लेकिन यह केवल तब काम करता है जब डेवलपर टूल खोला जाता है। अब मैं सेलेनियम का उपयोग कर डेवलपर टूल को खोलने के लिए अटक गया हूँ? क्या आप कमेट कर सकते हैं कि मैं अलग-अलग एक्सटेंशन से अनुरोध कैसे ट्रैक कर सकता हूं? –

+0

क्रोम एक्सटेंशन विकास के साथ वास्तव में बातचीत नहीं करता है। जावास्क्रिप्ट में उपयोगकर्ता वांछित कार्यों को शामिल करने के लिए विस्तार को संशोधित करने के बारे में http://stackoverflow.com/questions/23825371/running-a-chrome-extension-from-selenium-webdriver इस पोस्ट का संदर्भ लें। सुनिश्चित नहीं है कि यह सहायक होगा – parishodak

1

उनके जवाब सुनिश्चित नहीं हैं कि क्यों, लेकिन किसी को नष्ट कर दिया है, जो सही थी। यहां ऐसी सामग्री (@parishodak से प्राप्त) है:

ChromeOptions options = new ChromeOptions(); 
options.addExtensions(new File("/path/to/extension.crx")); 
DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
ChromeDriver driver = new ChromeDriver(capabilities); 

यह विशेष रूप से उदाहरण के अपने दस्तावेज़ फ़ाइल में जावा

2
  1. रखें chromedriver exe में है अगर आप इस का पालन करना चाहते हैं और एक सफल परिणाम है।

  2. Google से "प्राप्त सीआरएक्स" एक्सटेंशन डाउनलोड करें।

  3. अपना एक्सटेंशन डाउनलोड करें (यानी मेरा एटी परीक्षण के लिए "डीएचएस" है)।

  4. जाओ Chrome वेब स्टोर पर >> आपका एक्सटेंशन (एक आप पहले से ही डाउनलोड किया है) >> सही उस पर क्लिक करें और क्लिक :: प्राप्त CRX
    (यह CRX फ़ाइल डाउनलोड करना चाहिए के लिए खोज। मेरे मामले के लिए सीआरएक्स फ़ाइल "extension_1_2_5.crx" है)

  5. किसी भी क्रोम विंडो में सीआरएक्स फ़ाइल ड्रॉप करें (यह इसे अस्वीकार कर सकता है लेकिन कोई चिंता नहीं)।

  6. अब, अपने परीक्षण का निर्माण और

    public static void openChromeExtension(){ 
    
        System.setProperty("webdriver.chrome.driver", "/Users/[your local name]/Documents/chromedriver"); 
    
        ChromeOptions options = new ChromeOptions(); 
        options.addExtensions(new File("/Users/[your local name]/Documents/extension_1_2_5.crx")); 
    
        DesiredCapabilities capabilities = new DesiredCapabilities(); 
        capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
        ChromeDriver driver = new ChromeDriver(capabilities); 
        System.out.println("Opening extension"); 
        driver.get("chrome-extension://**aejoelaoggembcahagimdiliamlcdmfm**/dhc.html"); 
    
        driver.navigate().refresh(); 
        System.out.println("Refresh successfully"); 
    } 
    

    // इस विस्तार यूआरएल है निष्पादित या आप क्रोम पर आईडी प्राप्त कर सकते हैं: // extensions/विस्तार पाते हैं और कॉपी आईडी। हालांकि, यूआरएल एक्सटेंशन यूआरएल होना चाहिए।

+0

वह फ़ाइल जो मुझे दे रही है वह है।बिन फ़ाइल एक .crx फ़ाइल नहीं है। क्या यह सामान्य है? – MattClimbs

0
using System.IO; 
using System.IO.Compression; 



    public static class ChromeExtension 
     { 
      public static string Execute() 
      { 
       var ParentPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent; 
       var DirectoryPath = ParentPath.FullName.Remove(ParentPath.FullName.IndexOf(ParentPath.Name)); 

       string startPath = $"{DirectoryPath}\\Exchanger\\ChromeExtension"; 
       string zipPath = $"{DirectoryPath}Exchanger\\Extension.zip"; 

       if (System.IO.File.Exists(zipPath)) 
       { 
        System.IO.File.Delete(startPath); 
       } 

       ZipFile.CreateFromDirectory(startPath, zipPath); 


       if (System.IO.File.Exists($"{DirectoryPath}\\Exchanger\\Extension.crx")) 
       { 
        System.IO.File.Delete($"{DirectoryPath}\\Exchanger\\Extension.crx"); 
       } 

       System.IO.File.Move(zipPath, $"{DirectoryPath}\\Exchanger\\Extension.crx"); 

       return $"{DirectoryPath}\\Exchanger\\Extension.crx"; 
      } 

     } 

.... //// ....

Used: 
var options = new ChromeOptions(); 
options.AddExtension(ChromeExtension.Execute()); 

....////.... 
0

हालांकि तकनीकी रूप से ध्वनि हमेशा उद्देश्य के काम नहीं ऊपर समाधान, तो मैं एक और तरीका यह करने के लिए सोचा। कई बार क्योंकि मैं

मैं प्रोफाइल के रूप फ़ोल्डर का उपयोग आदि चीजें हैं जो बेहतर मैन्युअल रूप से किया जाता है, प्रमाणीकरणों, कुछ कुकी का एक बहुत, की जरूरत है, मैं चलाएँ:

chrome_options = Options() 
chrome_options.add_argument("user-data-dir=selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options) 
driver.get("www.google.com") 

तो मैं मैन्युअल एक्सटेंशन स्थापित करने और कर लॉगिन अब मैं हर समय की जरूरत के साथ मैं उस फ़ोल्डर सब कुछ Webdriver शुरू होती है

chrome_options = Options() 
chrome_options.add_argument("user-data-dir=selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options) 
driver.get("www.google.com") #Now you can see the Extensions and the logins done are present 

लाभ आप को स्थापित करने और extens की स्थापना रद्द करने की आवश्यकता के बिना अलग सेटिंग और एक्सटेंशन के साथ एक से अधिक फ़ोल्डर का उपयोग कर सकते है आयन, सेटिंग्स बदलें, लॉग इन इत्यादि