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
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.
- get source del prolungamento (ad esempio utilizzando il Chrome extension source viewer aka CRX Viewer).
- Disimballare il file zip.
Creare un nuovo file HTML,
example_name.html
, e lasciare che contengono:<script src="example_name.js"></script>
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(); });
- Aggiungi il file HTML precedente a
web_accessible_resources
nel file manifest. Comprimere nuovamente l'estensione, ad es. utilizzando l'interfaccia grafica a
chrome://extensions
o utilizzandochrome.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.
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.
- 1. Errore nell'uso di Selenium JS Chrome Webdriver
- 2. Esecuzione di Selenium WebDriver utilizzando Python con estensioni (file .crx)
- 3. Selenium Webdriver configurazione remota
- 4. Come configurare programmaticamente l'estensione di Chrome tramite Selenium WebDriver
- 5. Problema di esecuzione di firefox con xvfb-run (Selenium WebDriver)
- 6. Come eseguire i test case Selenium WebDriver in Chrome?
- 7. Oggetto pagina Selenium WebDriver
- 8. Come utilizzare Firebug da Selenium WebDriver
- 9. Selenium WebDriverJS, non è possibile creare webdriver per Chrome
- 10. Selenium WebDriver su IE11
- 11. Esecuzione di selenio-manager web Selenium da Gradle
- 12. In esecuzione Selenium Webdriver con un proxy in Python
- 13. Esecuzione di Selenium :: WebDriver :: Firefox all'interno di Xvfb da ruby come utente NON root
- 14. Modello di fabbrica per il webdriver Selenium
- 15. Selenium Webdriver 2 con Firefox 26?
- 16. Selenium WebDriver JS - Wait esplicito
- 17. setSpeed in Selenium WebDriver con Ruby
- 18. Selenium Webdriver - Elemento non visibile
- 19. Selenium WebDriver e DropDown Boxes
- 20. Esecutore JavaScript in Selenium WebDriver
- 21. Selenium Webdriver submit() vs click()
- 22. Come aprire la console per gli sviluppatori di Chrome in Selenium WebDriver utilizzando JAVA
- 23. Selenium Webdriver - verificare la casella di testo protetta da scrittura?
- 24. Ottenere codice di stato HTTP da Selenium WebDriver C#
- 25. Caricamento di file da remoto su Selenium WebDriver utilizzando PHP
- 26. Python Selenium Webdriver - Autenticazione proxy
- 27. Python Selenium WebDriver drag-and-drop
- 28. Python - Selenium WebDriver - Esiste l'elemento di controllo
- 29. test Selenium WebDriver con JavaScript disabilitato
- 30. Selenium WebDriver Errore di Firefox - Impossibile connettersi
"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