6

Tutto ciò che voglio è caricare un'estensione chrome dal web store. Faccio molta ricerca per capirlo, ma solo per sapere che possiamo caricare l'estensione dalla macchina locale. Mi chiedo davvero se il selenio non abbia la funzionalità per caricare l'estensione dal web store o da un URL.Caricamento dell'estensione cromata con selenio

Per favore fatemi sapere cosa sto cercando è possibile utilizzare il selenio?

+0

Un'opzione è utilizzare java per scaricare il file crx dal webstore ogni volta che si eseguono gli script di test e quindi caricare lo script scaricato in chromeoptions. Ci sono molte opzioni per scaricare file da internet in Java. L'approccio sarà accettabile nel tuo caso? – parishodak

+0

sì, anche scaricando l'estensione dal negozio e poi l'installazione lo farà anche. Ma non sono sicuro di poter scaricare il file CRX? Disponiamo di URL di download? –

risposta

7

Non sono sicuro del motivo per cui si è particolarmente interessati al download da Webstore e quindi all'installazione in Chrome.

ho trovato alcuni passi per scaricare estensioni Chrome:

-Con un computer collegato a Internet, installare l'estensione dalla pagina aggiuntiva: https://chrome.google.com/webstore/detail/
-Navigate al codice sorgente di estensione. In XP questo si trova in: C: \ Documents and Settings \\ Impostazioni locali \ Dati applicazioni \ Google \ Chrome \ Dati utente \ Predefinito \ Estensioni \
-Si dovrebbe vedere una cartella versione (ad es. "0.0.21_0") . Copia questa cartella e spostala sulla macchina su cui desideri installare.
-open up di cromo sulla macchina scollegata e andare a Wrench -> Strumenti -> Estensioni
-Fare clic sul segno + accanto alla modalità sviluppatore per visualizzare le opzioni per sviluppatori
-Clicca 'estensione pack ...' e scegliere la versione cartella come directory principale. Lascia vuoto il file della chiave privata. Questo creerà un file .crx nella cartella della versione insieme a una chiave privata come se tu fossi lo sviluppatore. .

--OPPURE--

1- Trovare l'ID della estensione che ti interessa Quando nella pagina dei dettagli dell'estensione, che sarà qualcosa di simile: bfbmjmiodbnnpllbbbfblcplfjjepjdn dopo https://chrome.google.com/webstore/detail/

2- incollarlo in qualsiasi altro browser (non Chrome): https://clients2.google.com/service/update2/crx?response=redirect&x=id%3D~~~~%26uc

3- e sostituendo ~~~~ con l'ID estensione. Ti verrà richiesto di salvare un file CRX. Trascina questo file in una finestra di Chrome e procedi con l'installazione.

Fonte: https://productforums.google.com/forum/#!topic/chrome/g02KlhK12fU

Infine, utilizzare il file scaricato in .crx ChromeOptions per caricare l'estensione

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); 

Fonte: https://sites.google.com/a/chromium.org/chromedriver/extensions

+0

Grazie parishodak. Ho fatto questo usando un JS che mi restituisce un URL di download per un dato ID. –

+0

Ho fatto questo usando un JS che mi restituisce un URL di download per un dato ID. Il mio obiettivo finale è intercettare le richieste che escono dalle estensioni di diff. Per questo sto usando un'altra mia estensione dove sto usando l'API 'chrome.webRequest.onBeforeRequest' per acquisire la richiesta. Ma sembra che Chrome non inoltra richieste provenienti da estensioni al mio gestore. Un'altra API che posso usare è 'chrome.devtools.network.onRequestFinished', ma funziona solo quando viene aperto lo strumento di sviluppo. Ora sono bloccato come aprire lo strumento di sviluppo con Selenium? Puoi sapere come posso tenere traccia delle richieste da diverse estensioni? –

+0

non è molto pratico con lo sviluppo dell'estensione di Chrome. fare riferimento a questo post http://stackoverflow.com/questions/23825371/running-a-crrome-extension-from-selenium-webdriver sulla modifica dell'estensione per includere le azioni desiderate dall'utente in javascript. Non so se sarà utile – parishodak

1

Non so perché, ma qualcuno cancellato la loro risposta, che era corretto Ecco il contenuto (provenienti da @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); 

Questo particolare esempio è in Java

2
  1. Put chromedriver exe nel file documento se si vuole seguire questa ed avere un risultato positivo.

  2. Download estensione "GET CRX" da Google.

  3. Scarica la tua estensione (ad esempio, il mio è "DHS" per il test dell'API di Rest).

  4. Vai a Chrome Web Store >> ricerca per la propria estensione (quella che hai già scaricato) >> tasto destro del mouse su di esso e fare clic su :: GET CRX
    (Questo dovrebbe scaricare il file CRX. Per il mio caso il file CRX è "extension_1_2_5.crx")

  5. Rilascia il file CRX in qualsiasi finestra di Chrome (questo può rifiutarlo ma non preoccuparti).

  6. Ora, costruire il test ed eseguire

    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"); 
    } 
    

    // questo è l'URL estensione o si può ottenere l'id su chrome: // extensions/trovare l'estensione e copiare il ID. Tuttavia, l'URL deve essere l'URL dell'estensione.

+0

Il file che mi sta dando è un.il file bin non è un file .crx. È normale? – 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

Le soluzioni di cui sopra anche se tecnicamente il suono non sempre funziona come previsto, così ho pensato un altro modo per farlo. Perché molte volte ho bisogno di un sacco di cose che sono meglio effettuata manualmente, autenticazioni, alcuni biscotti, ecc

Io uso cartelle come profili, corro:

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

Poi installo manualmente le estensioni e fare gli accessi ho bisogno ora ogni volta che avvio il WebDriver con tutto ciò che la cartella è là

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 

il vantaggio è che si può utilizzare più cartelle con impostazione e le estensioni differenti senza la necessità di installare e disinstallare Extens ioni, modificare le impostazioni, modificare accessi, ecc.