Funzionalità e ChromeOptions

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

Le API del linguaggio WebDriver forniscono dei modi per trasmettere 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. È supportato 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 pratici per impostare funzionalità specifiche di ChromeDriver. Puoi quindi passare l'oggetto ChromeOptions nel costruttore di 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, la classe ChromeOptions in Java implementa anche l'interfaccia Capabilities, consentendoti 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);

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

Utilizzare un 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 semplicemente utilizzare un profilo personalizzato completamente. Nel primo caso, puoi utilizzare la funzionalità "chrome.prefs" (descritta di seguito) per specificare le preferenze che verranno 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 quale profilo utilizzare:

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

Puoi creare il tuo profilo personalizzato eseguendo 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 può utilizzare il profilo in futuro. Apri chrome://version nel browser per vedere quale profilo utilizza Chrome.

Avvia Chrome ingrandito

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 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 codice seguente può essere utilizzato per configurare Chrome per il download di file in una directory specifica. Tuttavia, occorre tenere presenti diversi aspetti:

  • Chrome non consente l'utilizzo di determinate directory per il download. In particolare, non puoi utilizzare la cartella del desktop come directory di download. Su Linux, non puoi neanche utilizzare la home directory per il download. Poiché l'elenco esatto delle directory vietate può subire modifiche, consigliamo di utilizzare una directory che non ha un significato particolare per il sistema.
  • ChromeDriver non attende automaticamente il completamento del download. Se chiami driver.quit() troppo presto, Chrome potrebbe arrestarsi prima della fine del download.
  • I percorsi relativi non sempre funzionano. Per ottenere risultati ottimali, utilizza invece il percorso completo.
  • Su Windows, utilizza "" come separatori di percorso. L'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);

Funzionalità riconosciute

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

ChromeOptions oggetto

La maggior parte delle funzionalità specifiche di Chrome è esposta tramite l'oggetto ChromeOptions. In alcuni linguaggi, ciò è implementato dalla classe ChromeOptions. In altre lingue, vengono archiviate nel dizionario goog:chromeOptions con le funzionalità desiderate.

Nome Digitare 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 dal segno "=" (ad es. ['start-maximized', 'user-data-dir=/tmp/temp_profile']). Vedi qui un elenco di argomenti di Chrome.
binary stringa   Percorso del file eseguibile di Chrome da utilizzare (su Mac OS X, questo deve corrispondere al file binario effettivo, non solo all'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 nell'elenco deve essere un'estensione di Chrome pacchettizzata con codifica 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 soltanto al profilo utente in uso. Per alcuni esempi, vedi il file "Preferenze" nella directory dei dati utente di Chrome.
detach boolean false Se viene impostato su false, Chrome verrà chiuso alla chiusura di ChromeDriver, indipendentemente dal fatto che la sessione sia stata chiusa. Se il valore è 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ò ripulire la directory temporanea dei dati utente che utilizza l'istanza di Chrome in esecuzione.
debuggerAddress stringa
Un indirizzo di un server 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 quel ChromeDriver passato per impostazione predefinita all'avvio di Chrome. Non anteporre ai sensori 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 saperne di più, consulta l'articolo sull'emulazione di dispositivi mobili.
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 punti di manipolazione delle finestre. Per accedere agli elementi <webview>, includi "webview" in questo elenco.

perfLoggingPrefs oggetto

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

Nome Tipo Predefinito Descrizione
enableNetwork boolean true Indica se raccogliere o meno eventi dal dominio di rete.
enablePage boolean true Indica 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 di DevTools. Ad esempio, se il valore è 1000, una volta al secondo DevTools riporterà il livello di esaurimento del buffer di traccia. Se un report indica che l'utilizzo del buffer è pari al 100%, verrà inviato un avviso.

Funzionalità restituite

Questo è un elenco di tutte le funzionalità restituite specifiche di Chrome. (ad esempio, ciò che viene restituito da ChromeDriver quando crei una nuova sessione)

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