5

Sono a conoscenza di come posso caricare un'estensione chrome nel selenio web. Ma non vedo nessun post/blog che descriva come posso eseguire da un'estensione cromata da Selenium.

Ho bisogno di fare in modo esplicito un'estensione di chrome eseguire/fargli eseguire la sua funzione dal selenio. Ad esempio, voglio svuotare la cache del browser Chrome utilizzando questo extension con Selenium Webdriver.

Posso farlo in primo luogo? Oppure Selenium WebDriver può aiutarmi solo a caricare un'estensione nell'istanza del browser e lasciarla lì?Esecuzione di un'estensione chrome da Selenium WebDriver

risposta

7

Quando un'estensione di Chrome è attivata, è già "in esecuzione" (la sua pagina di sfondo/evento, almeno). Non c'è API per fare clic programmaticamente sul pulsante.

Se si desidera utilizzare la funzionalità di un'estensione esistente con pochi sforzi, quindi suggerisco di scaricare il codice sorgente dell'estensione e inserire un listener di eventi aggiuntivo nel codice sorgente dell'estensione.

  1. get source del prolungamento (ad esempio utilizzando il Chrome extension source viewer aka CRX Viewer).
  2. Disimballare il file zip.
  3. Creare un nuovo file HTML, example_name.html, e lasciare che contengono:

    <script src="example_name.js"></script> 
    
  4. Creare un nuovo file di script, example_name.js, e lasciare che chiamare la funzionalità del estensione, ad esempio:

    chrome.runtime.getBackgroundPage(function(bg) { 
        // Relevant function at the background page. In your specific example: 
        bg.clearCache(); 
    }); 
    
  5. Aggiungi il file HTML precedente a web_accessible_resources nel file manifest.
  6. Comprimere nuovamente l'estensione, ad es. utilizzando l'interfaccia grafica a chrome://extensions o utilizzando

    chrome.exe --pack-extension=directorycontainingextension 
    

    Dopo aver creato directorycontainingextension.crx, caricare il file CRX in Chrome per conoscere l'ID estensione. Se non sai come caricare il file crx in Chrome, visita il numero https://robwu.nl/crxviewer/, seleziona il file crx, apri gli strumenti di sviluppo F12 e copia la stringa di 32 caratteri in "ID estensione calcolata: [ID estensione qui]".

    (A partire dal ChromeDriver 2.11, you can just zip the extension invece di imballaggio come file CRX, e hard-code l'ID estensione nel file manifesto impostando l'attributo "key" (questo attributo "key" è stampato anche sulla console F12 dal CRX Viewer).)

Dopo aver modificato l'estensione, si avrà un'estensione con le stesse funzionalità di quella originale, oltre a una pagina HTML aggiuntiva. Questa nuova pagina HTML richiamerà la funzionalità dell'estensione quando viene aperta.

Dopo aver eseguito questa operazione, "eseguire" l'interno è facile come aprire chrome-extension://[EXTENSION ID HERE]/example_name.html in una nuova scheda.

Se non vi piacciono queste nuove schede, allora si potrebbe anche utilizzare l'API chrome.webRequest o chrome.declarativeWebRequest di intercettare URL personalizzati e attivare la funzionalità desiderata ogni volta che una pagina richieste questa risorsa.Quindi, puoi semplicemente inserire l'URL in un <img> per attivare la funzionalità dell'estensione.

+0

"4. Crea un nuovo file di script, nome_esempio.js, e lascia che chiami la funzionalità dell'estensione "--- Come faccio a sapere quale metodo è responsabile della funzionalità di un determinato plug-in? Voglio scaricare video utilizzando il" video downloader professionale " collegare. – HelloWorldNoMore

0

La soluzione di cui sopra è tecnicamente solida sembra essere complicata , quindi 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.

Problemi correlati