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:
- Utilizza il corso
ChromeOptions
. È supportato da Java, Python e così via. - 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.
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" |