Funzionalità e ChromeOptions

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

Le API del linguaggio WebDriver forniscono modi per trasferire 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 il corso ChromeOptions. Supportata da Java, Python e così via.
  2. Utilizza il corso DesiredCapabilities. È supportato da Python, Ruby e così via. Sebbene sia disponibile anche in Java, il suo utilizzo in Java è deprecato.

Utilizzo della classe ChromeOptions

Puoi creare un'istanza di ChromeOptions, che offre metodi comodi per impostare funzionalità specifiche per ChromeDriver. Dopodiché puoi passare l'ChromeOptions nel costruttore ChromeDriver:

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

A partire dalla versione 3.6.0 di Selenium, anche la classe ChromeOptions in Java implementa l'interfaccia Capabilities, consentendoti di specificare altre funzionalità 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);

Utilizzo di DesiredCapabilities

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

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

Utilizza il profilo personalizzato (detto anche directory dei dati utente)

Per impostazione predefinita, ChromeDriver crea un nuovo profilo temporaneo per ogni sessione. A volte potresti voler impostare preferenze speciali o utilizzare un profilo completamente personalizzato. Nel primo caso, puoi usare il file "chrome.prefs" (descritti più avanti) per specificare le preferenze che saranno applicate dopo l'avvio di Chrome. Nel secondo caso, puoi utilizzare l'opzione della riga di comando di Chrome user-data-dir per indicare a Chrome il profilo da utilizzare:

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

Puoi creare il tuo profilo personalizzato eseguendo semplicemente Chrome (dalla riga di comando o tramite ChromeDriver) con l'opzione user-data-dir impostata su una nuova directory. Se il percorso non esiste, Chrome creerà un nuovo profilo nella posizione specificata. Puoi quindi modificare le impostazioni del profilo come preferisci e ChromeDriver potrà utilizzarlo in futuro. Apri chrome://version nel browser per vedere quale profilo utilizza Chrome.

Avvia Chrome ingrandito

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

Utilizzo di un file eseguibile di Chrome in una posizione non standard

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

Blocca finestre di dialogo

Per impostazione predefinita, ChromeDriver configura Chrome in modo da consentire le finestre popup. Se vuoi bloccare i popup (ovvero 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 directory di download

Il seguente codice può essere usato per configurare Chrome in modo che scarichi i file in una directory specifica. Tuttavia, ci sono diverse avvertenze di cui tenere conto:

  • Chrome non consente il download di determinate directory. In particolare, non è possibile utilizzare la cartella desktop come directory di download. Inoltre, su Linux non puoi usare la home directory per il download. Poiché l'elenco esatto di directory proibite è soggetto a modifiche, si consiglia di usare una directory che non abbia un significato particolare per il sistema.
  • ChromeDriver non attende automaticamente il completamento del download. Se chiami il metodo driver.quit() troppo presto, Chrome potrebbe arrestarsi prima del termine del download.
  • I percorsi relativi non sempre funzionano. Per ottenere risultati ottimali, utilizza invece il percorso completo.
  • Su Windows, utilizza "" come separatori di percorso. Utilizzo di "/" non è affidabile su Windows.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

Capacità riconosciute

Consulta la documentazione di Selenium e lo standard W3C WebDriver per accettate da ChromeDriver. Qui sono elencate solo le applicazioni le funzionalità di machine learning.

ChromeOptions oggetto

La maggior parte delle funzionalità specifiche di Chrome viene esposta tramite ChromeOptions . In alcune lingue, questa funzionalità è implementata dalla classe ChromeOptions. Nella altre lingue, sono memorizzate nel dizionario goog:chromeOptions in le funzionalità desiderate.

Nome Tipo Predefinita  Descrizione 
args  elenco di stringhe   Elenco di argomenti della riga di comando da utilizzare all'avvio di Chrome. Gli argomenti con un valore associato devono essere separati da "=" (ad es. ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Consulta qui per visualizzare un elenco di argomenti di Chrome.
binary stringa   Percorso dell'eseguibile di Chrome da utilizzare (su Mac OS X deve essere il programma 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 pacchettizzata (.crx) con codifica Base64
localState dizionario   Un dizionario con ciascuna voce composta dal nome della preferenza e dal suo valore. Queste preferenze vengono applicate al file dello stato locale nella cartella dei dati utente.
prefs dizionario   Un dizionario con ciascuna voce composta dal nome della preferenza e dal suo valore. Queste preferenze vengono applicate soltanto al profilo utente in uso. Visualizza la scheda "Preferenze" nella directory dei dati utente di Chrome per vedere alcuni esempi.
detach booleano falso Se il valore è false, Chrome verrà chiuso all'arresto del ChromeDriver, indipendentemente dal fatto che la sessione venga chiusa o meno. Se impostato su true, Chrome verrà chiuso solo se la sessione viene chiusa (o chiusa). Tieni presente che, se il valore è true e la sessione non viene chiusa, ChromeDriver non può pulire la directory dei dati utente temporanei utilizzata dall'istanza di Chrome in esecuzione.
debuggerAddress stringa
Un indirizzo di un server di debugger di Chrome a cui connettersi, nel formato <nomehost/ip:porta>, ad esempio "127.0.0.1:38947"
excludeSwitches elenco di stringhe   Elenco di opzioni della riga di comando di Chrome per escludere il ChromeDriver per impostazione predefinita all'avvio di Chrome. Non utilizzare il prefisso --.
minidumpPath  stringa   Directory in cui archiviare i minidump di Chrome . (supportato solo su Linux).
mobileEmulation dizionario   Un dizionario con un valore per "deviceName" o valori per "deviceMetrics" e "userAgent". Per ulteriori informazioni, fai riferimento a Emulazione mobile.
perfLoggingPrefs dizionario   Un dizionario facoltativo che specifica le preferenze di logging delle prestazioni. Per saperne di più, vedi di seguito.
windowTypes elenco di stringhe   Un elenco dei tipi di finestre che verranno visualizzati nell'elenco dei handle di finestre. Per accedere a <webview> , includono "webview" in questo elenco.

perfLoggingPrefs oggetto

Il dizionario perfLoggingPrefs ha il seguente formato (tutte le chiavi sono facoltative):

Nome Tipo Predefinito Descrizione
enableNetwork booleano true Se raccogliere o meno eventi dal dominio di rete.
enablePage booleano true Se raccogliere o meno eventi dal dominio della pagina.
traceCategories stringa (vuoto) Una stringa di categorie di tracciamento di Chrome, separate da virgole, per cui devono essere raccolti gli eventi di traccia. Una stringa non specificata o vuota disabilita il tracciamento.
bufferUsageReportingInterval numero intero positivo 1000 Il numero di millisecondi richiesto tra gli eventi di utilizzo del buffer di traccia DevTools. Ad esempio, se il valore è 1000, una volta al secondo DevTools segnalerà quanto è pieno il buffer di traccia. Se un report indica che l'utilizzo del buffer è 100%, viene visualizzato un avviso.

Funzionalità restituite

Questo è un elenco di tutte le funzionalità restituite specifiche di Chrome. (ovvero ciò che ChromeDriver restituisce quando crei una nuova sessione)

Nome Tipo  Descrizione 
chrome.chromedriverVersion stringa versione di ChromeDriver
userDataDir stringa il percorso della directory dei dati utente utilizzata da Chrome. puoi notare che si trova all'interno di dizionario