Vai al contenuto principale

Funzionalità

Una capacità è una definizione per un'interfaccia remota. Aiuta WebdriverIO a comprendere in quale ambiente browser o mobile desideri eseguire i tuoi test. Le capacità sono meno cruciali quando si sviluppano test localmente poiché si eseguono su un'interfaccia remota la maggior parte del tempo, ma diventano più importanti quando si esegue un grande insieme di test di integrazione in CI/CD.

info

Il formato di un oggetto capacità è ben definito dalla specifica WebDriver. Il testrunner di WebdriverIO fallirà immediatamente se le capacità definite dall'utente non aderiscono a tale specifica.

Capacità Personalizzate

Mentre il numero di capacità definite in modo fisso è molto basso, chiunque può fornire e accettare capacità personalizzate specifiche per il driver di automazione o l'interfaccia remota:

Estensioni di Capacità Specifiche per Browser

  • goog:chromeOptions: estensioni Chromedriver, applicabili solo per test in Chrome
  • moz:firefoxOptions: estensioni Geckodriver, applicabili solo per test in Firefox
  • ms:edgeOptions: EdgeOptions per specificare l'ambiente quando si utilizza EdgeDriver per testare Chromium Edge

Estensioni di Capacità per Fornitori Cloud

Estensioni di Capacità per Motori di Automazione

Capacità WebdriverIO per gestire le opzioni del driver del browser

WebdriverIO gestisce l'installazione e l'esecuzione del driver del browser per te. WebdriverIO utilizza una capacità personalizzata che ti permette di passare parametri al driver.

wdio:chromedriverOptions

Opzioni specifiche passate a Chromedriver quando viene avviato.

wdio:geckodriverOptions

Opzioni specifiche passate a Geckodriver quando viene avviato.

wdio:edgedriverOptions

Opzioni specifiche passate a Edgedriver quando viene avviato.

wdio:safaridriverOptions

Opzioni specifiche passate a Safari quando viene avviato.

wdio:maxInstances

Numero massimo di lavoratori paralleli totali per il browser/capacità specifico. Ha precedenza su maxInstances e maxInstancesPerCapability.

Tipo: number

wdio:specs

Definisce le specifiche per l'esecuzione del test per quel browser/capacità. Uguale all'opzione di configurazione regolare specs, ma specifica per il browser/capacità. Ha precedenza su specs.

Tipo: (String | String[])[]

wdio:exclude

Esclude le specifiche dall'esecuzione del test per quel browser/capacità. Uguale all'opzione di configurazione regolare exclude, ma specifica per il browser/capacità. Esclude dopo che l'opzione di configurazione globale exclude è stata applicata.

Tipo: String[]

wdio:enforceWebDriverClassic

Per impostazione predefinita, WebdriverIO tenta di stabilire una sessione WebDriver Bidi. Se non preferisci questo comportamento, puoi impostare questo flag per disabilitarlo.

Tipo: boolean

Opzioni comuni per i driver

Mentre tutti i driver offrono parametri diversi per la configurazione, ce ne sono alcuni comuni che WebdriverIO comprende e utilizza per configurare il tuo driver o browser:

cacheDir

Il percorso della radice della directory di cache. Questa directory viene utilizzata per memorizzare tutti i driver che vengono scaricati quando si tenta di avviare una sessione.

Tipo: string
Predefinito: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()

binary

Percorso di un binario driver personalizzato. Se impostato, WebdriverIO non tenterà di scaricare un driver ma utilizzerà quello fornito da questo percorso. Assicurati che il driver sia compatibile con il browser che stai utilizzando.

Puoi fornire questo percorso tramite le variabili d'ambiente CHROMEDRIVER_PATH, GECKODRIVER_PATH o EDGEDRIVER_PATH.

Tipo: string

attenzione

Se il binary del driver è impostato, WebdriverIO non tenterà di scaricare un driver ma utilizzerà quello fornito da questo percorso. Assicurati che il driver sia compatibile con il browser che stai utilizzando.

Opzioni specifiche per driver di browser

Per propagare le opzioni al driver puoi utilizzare le seguenti capacità personalizzate:

  • Chrome o Chromium: wdio:chromedriverOptions
  • Firefox: wdio:geckodriverOptions
  • Microsoft Edge: wdio:edgedriverOptions
  • Safari: wdio:safaridriverOptions
adbPort

La porta su cui il driver ADB dovrebbe funzionare.

Esempio: 9515

Tipo: number

urlBase

Prefisso di percorso URL base per i comandi, ad es. wd/url.

Esempio: /

Tipo: string

logPath

Scrive il log del server su file invece che su stderr, aumenta il livello di log a INFO

Tipo: string

logLevel

Imposta il livello di log. Opzioni possibili ALL, DEBUG, INFO, WARNING, SEVERE, OFF.

Tipo: string

verbose

Log dettagliato (equivalente a --log-level=ALL)

Tipo: boolean

silent

Non registrare nulla (equivalente a --log-level=OFF)

Tipo: boolean

appendLog

Aggiunge al file di log invece di riscriverlo.

Tipo: boolean

replayable

Log dettagliato e non tronca stringhe lunghe in modo che il log possa essere riprodotto (sperimentale).

Tipo: boolean

readableTimestamp

Aggiunge timestamp leggibili al log.

Tipo: boolean

enableChromeLogs

Mostra i log dal browser (sovrascrive altre opzioni di logging).

Tipo: boolean

bidiMapperPath

Percorso del mapper bidi personalizzato.

Tipo: string

allowedIps

Lista di indirizzi IP remoti separati da virgola che sono autorizzati a connettersi a EdgeDriver.

Tipo: string[]
Predefinito: ['']

allowedOrigins

Lista di origini di richieste separate da virgola che sono autorizzate a connettersi a EdgeDriver. L'uso di * per consentire qualsiasi origine host è pericoloso!

Tipo: string[]
Predefinito: ['*']

spawnOpts

Opzioni da passare al processo del driver.

Tipo: SpawnOptionsWithoutStdio | SpawnOptionsWithStdioTuple<StdioOption, StdioOption, StdioOption>
Predefinito: undefined

Capacità Speciali per Casi d'Uso Specifici

Questa è una lista di esempi che mostra quali capacità devono essere applicate per ottenere un determinato caso d'uso.

Eseguire il Browser in Modalità Headless

Eseguire un browser headless significa eseguire un'istanza del browser senza finestra o interfaccia utente. Questo viene utilizzato principalmente in ambienti CI/CD dove non viene utilizzato alcun display. Per eseguire un browser in modalità headless, applica le seguenti capacità:

{
browserName: 'chrome', // o 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}

Automatizzare Diversi Canali di Browser

Se desideri testare una versione del browser che non è ancora rilasciata come stabile, ad esempio Chrome Canary, puoi farlo impostando le capacità e puntando al browser che desideri avviare, ad esempio:

Quando si testa su Chrome, WebdriverIO scaricherà automaticamente la versione del browser e del driver desiderati in base al browserVersion definito, ad esempio:

{
browserName: 'chrome', // o 'chromium'
browserVersion: '116' // o '116.0.5845.96', 'stable', 'dev', 'canary', 'beta' o 'latest' (lo stesso di 'canary')
}

Se desideri testare un browser scaricato manualmente, puoi fornire un percorso binario al browser tramite:

{
browserName: 'chrome', // o 'chromium'
'goog:chromeOptions': {
binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
}

Inoltre, se desideri utilizzare un driver scaricato manualmente, puoi fornire un percorso binario al driver tramite:

{
browserName: 'chrome', // o 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}

Estendere Capacità Personalizzate

Se desideri definire il tuo set di capacità, ad esempio per memorizzare dati arbitrari da utilizzare nei test per quella specifica capacità, puoi farlo impostando ad esempio:

export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// configurazioni personalizzate
}
}]
}

Si consiglia di seguire il protocollo W3C quando si tratta di denominazione delle capacità, che richiede un carattere : (due punti), che denota uno spazio dei nomi specifico dell'implementazione. All'interno dei tuoi test puoi accedere alla tua capacità personalizzata tramite, ad esempio:

browser.capabilities['custom:caps']

Per garantire la sicurezza dei tipi, puoi estendere l'interfaccia delle capacità di WebdriverIO tramite:

declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}

Welcome! How can I help?

WebdriverIO AI Copilot