Funzionalità e ChromeOptions

Le funzionalità sono opzioni che puoi utilizzare per personalizzare e configurare una sessione di ChromeDriver. Questa pagina descrive tutte le funzionalità supportate da ChromeDriver e come utilizzarle.

Le API di linguaggio WebDriver forniscono modi per passare le funzionalità a ChromeDriver. Il meccanismo esatto varia in base alla lingua, ma la maggior parte delle lingue utilizza uno o entrambi i seguenti meccanismi:

  1. Utilizza la classe ChromeOptions. Questo è supportato da Java, Python e così via.
  2. Utilizza la classe DesiredCapabilities. Questo è supportato da Python, Ruby e così via. Anche se è disponibile anche in Java, il suo utilizzo in Java è deprecato.

Utilizzo della classe ChromeOptions

Puoi creare un'istanza di ChromeOptions, che dispone di metodi pratici per impostare funzionalità specifiche di ChromeDriver. Puoi quindi passare l'oggetto ChromeOptions al costruttore di ChromeDriver:

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Dalla versione 3.6.0 di Selenium, la classe ChromeOptions in Java implementa anche l'interfaccia Capabilities, consentendo di specificare altre funzionalità di WebDriver non specifiche di ChromeDriver.

ChromeOptions options = new ChromeOptions();

// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);

// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Utilizzare DesiredCapabilities

Per utilizzare DesiredCapabilities, devi conoscere il nome della funzionalità e il tipo di valore che accetta. Consulta l'elenco completo.

Python

caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

Ruby

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
  "goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

Casi d'uso comuni

Utilizzare un profilo personalizzato

Per impostazione predefinita, ChromeDriver crea un nuovo profilo temporaneo per ogni sessione. Puoi impostare preferenze speciali o semplicemente utilizzare un profilo personalizzato, chiamato anche directory dei dati utente.

Se utilizzi il profilo temporaneo, puoi usare la funzionalità chrome.prefs per specificare le preferenze da applicare all'avvio di Chrome. Per i profili personalizzati, puoi utilizzare l'opzione user-data-dir della riga di comando di Chrome per indicare a Chrome quale profilo da utilizzare:

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");

Crea il tuo profilo personalizzato eseguendo Chrome sulla riga di comando o con ChromeDriver, utilizzando l'opzione user-data-dir impostata su una nuova directory.

Se il percorso non esiste, Chrome crea un nuovo profilo nella posizione specificata. Puoi quindi modificare le impostazioni del profilo e ChromeDriver potrà utilizzarlo in futuro. Apri chrome://version nel browser per vedere quale profilo sta utilizzando Chrome.

Avviare Chrome a schermo intero

Avvia Chrome in modalità a schermo intero utilizzando l'opzione start-maximized:

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

Utilizzare un file eseguibile di Chrome in una posizione non standard

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

Bloccare le finestre di dialogo

Per impostazione predefinita, ChromeDriver configura Chrome in modo da consentire le finestre popup. Se vuoi bloccare i popup e ripristinare il normale comportamento di Chrome quando non è controllato da ChromeDriver, procedi nel seguente modo:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

Imposta la directory di download

Il seguente codice può essere utilizzato per configurare Chrome in modo che scarichi i file in una directory specifica. Tuttavia, ci sono diverse avvertenze da tenere presenti:

  • Chrome non consente l'utilizzo di determinate directory per il download. In particolare, non puoi utilizzare la cartella del computer come directory di download. Su Linux, non puoi usare la home directory per il download. L'elenco esatto delle directory vietate è soggetto a modifiche, pertanto ti consigliamo di utilizzare una directory univoca che non abbia un significato speciale per il sistema.
  • ChromeDriver non attende automaticamente il completamento del download. Se chiami driver.quit() troppo presto, Chrome potrebbe terminare prima del completamento del download.
  • Per risultati ottimali, utilizza percorsi completi, poiché i percorsi relativi non funzionano sempre.
  • Su Windows, l'utilizzo di \` as path separators./` non è affidabile.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

Funzionalità riconosciute

Leggi la documentazione di Selenium e lo standard W3C WebDriver per le funzionalità standard accettate da ChromeDriver. Di seguito sono elencate le funzionalità specifiche di Chrome.

ChromeOptions oggetto

La maggior parte delle funzionalità specifiche di Chrome è esposta tramite l'oggetto ChromeOptions. In alcune lingue, sono implementati dalla classe ChromeOptions. In altre lingue, sono memorizzati nel dizionario goog:chromeOptions in funzionalità selezionate.

Nome Tipo Predefinito Descrizione
args Elenco di stringhe    Elenco degli argomenti della riga di comando da utilizzare all'avvio di Chrome. Gli argomenti con un valore associato devono essere separati da un segno "=" (ad esempio, ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Consulta un elenco di argomenti di Chrome.
binary stringa   Percorso del file eseguibile di Chrome da utilizzare.
Su macOS X, deve essere il file binario effettivo, non solo l'app, ad esempio /Applications/Google Chrome.app/Contents/MacOS/Google Chrome.
extensions Elenco di stringhe   Un elenco di estensioni di Chrome da installare all'avvio. Ogni elemento dell'elenco deve essere un'estensione di Chrome compressa codificata in base64 (.crx)
localState dizionario   Un dizionario con ogni voce costituita dal nome della preferenza e dal relativo valore. Queste preferenze vengono applicate al file stato locale nella cartella dei dati utente.
prefs dizionario   Un dizionario con ogni voce costituita dal nome della preferenza e dal relativo valore. Queste preferenze vengono applicate solo al profilo utente in uso. Per esempi, consulta il file "Preferences" nella directory dei dati utente di Chrome.
detach booleano falso Se il valore è false, Chrome viene chiuso quando ChromeDriver viene interrotto, indipendentemente dal fatto che la sessione sia stata chiusa.
Se true, Chrome esce solo se la sessione viene chiusa. Se il valore è true e la sessione non viene chiusa, ChromeDriver non può ripulire la directory temporanea dei dati utente utilizzata dall'istanza di Chrome in esecuzione.
debuggerAddress stringa 
L'indirizzo di un server di debugger di Chrome a cui connettersi, nel formato <nome host/IP:porta>, ad esempio "127.0.0.1:38947"
excludeSwitches Elenco di stringhe    Elenco di parametri della riga di comando di Chrome da escludere che ChromeDriver passa per impostazione predefinita all'avvio di Chrome. Non anteporre ai comandi un prefisso --.
minidumpPath stringa    Directory in cui memorizzare i minidump di Chrome. (supportato solo su Linux).
mobileEmulation dizionario   Un dizionario con un valore per "deviceName" oppure valori per "deviceMetrics" e "userAgent". Per ulteriori informazioni, consulta Emulazione mobile.
perfLoggingPrefs dizionario   Un dizionario facoltativo che specifica le preferenze di registrazione del rendimento. Per saperne di più, vedi di seguito.
windowTypes Elenco di stringhe   Un elenco di tipi di finestre visualizzati nell'elenco delle maniglie delle finestre. Per accedere agli elementi webview, includi "webview" in questo elenco.
enableExtensionTargets booleano falso Attiva l'introspezione dei target delle estensioni di Chrome. Per impostazione predefinita, ChromeDriver non include i target delle estensioni (da Chrome 136).

perfLoggingPrefs oggetto

Il dizionario perfLoggingPrefs ha il seguente formato. Tutte le chiavi sono facoltative:

Nome Tipo Predefinito Descrizione
enableNetwork booleano true Indica se raccogliere o meno gli eventi dal dominio di rete.
enablePage booleano true Indica se raccogliere o meno gli eventi dal dominio della pagina.
traceCategories stringa (vuoto) Una stringa separata da virgole di categorie di monitoraggio di Chrome per le quali devono essere raccolti gli eventi di traccia. Una stringa non specificata o vuota disattiva il monitoraggio.
bufferUsageReportingInterval numero intero positivo 1000 Il numero di millisecondi richiesto tra gli eventi di utilizzo del buffer della traccia di DevTools. Ad esempio, se il valore è 1000, una volta al secondo DevTools segnala il livello di saturazione del buffer della traccia. Se un report indica che l'utilizzo del buffer è pari al 100%, viene emesso un avviso.

Funzionalità restituite

Di seguito è riportato un elenco di tutte le funzionalità restituite specifiche di Chrome, in altre parole, quanto viene restituito da ChromeDriver quando crei una nuova sessione.

Nome Tipo Descrizione
chrome.chromedriverVersion stringa di ChromeDriver
userDataDir stringa percorso della directory dei dati utente utilizzata da Chrome; tieni presente che si trova all'interno di un dizionario "chrome"