Automatisation du navigateur

Le groupe de commandes icc browser fournit l'automatisation du navigateur pour les surfaces navigateur de icc. Utilisez-le pour naviguer, interagir avec les éléments DOM, inspecter l'état de la page, évaluer du JavaScript et gérer les données de session du navigateur.

Index des commandes

CatégorieSous-commandes
Navigation et ciblageidentify, open, open-split, navigate, back, forward, reload, url, focus-webview, is-webview-focused
Attentewait
Interaction DOMclick, dblclick, hover, focus, check, uncheck, scroll-into-view, type, fill, press, keydown, keyup, select, scroll
Inspectionsnapshot, screenshot, get, is, find, highlight
JavaScript et injectioneval, addinitscript, addscript, addstyle
Frames, dialogues, téléchargementsframe, dialog, download
État et données de sessioncookies, storage, state
Onglets et journauxtab, console, errors

Cibler une surface navigateur

La plupart des sous-commandes nécessitent une surface cible. Vous pouvez la passer en position ou avec --surface.

# Open a new browser split
icc browser open https://example.com

# Discover focused IDs and browser metadata
icc browser identify
icc browser identify --surface surface:2

# Positional vs flag targeting are equivalent
icc browser surface:2 url
icc browser --surface surface:2 url

Navigation

icc browser open https://example.com
icc browser open-split https://news.ycombinator.com

icc browser surface:2 navigate https://example.org/docs --snapshot-after
icc browser surface:2 back
icc browser surface:2 forward
icc browser surface:2 reload --snapshot-after
icc browser surface:2 url

icc browser surface:2 focus-webview
icc browser surface:2 is-webview-focused

Attente

Utilisez wait pour bloquer jusqu'à ce que des sélecteurs, du texte, des fragments d'URL, l'état de chargement ou une condition JavaScript soient satisfaits.

icc browser surface:2 wait --load-state complete --timeout-ms 15000
icc browser surface:2 wait --selector "#checkout" --timeout-ms 10000
icc browser surface:2 wait --text "Order confirmed"
icc browser surface:2 wait --url-contains "/dashboard"
icc browser surface:2 wait --function "window.__appReady === true"

Interaction DOM

Les actions de mutation supportent --snapshot-after pour une vérification rapide dans les scripts.

icc browser surface:2 click "button[type='submit']" --snapshot-after
icc browser surface:2 dblclick ".item-row"
icc browser surface:2 hover "#menu"
icc browser surface:2 focus "#email"
icc browser surface:2 check "#terms"
icc browser surface:2 uncheck "#newsletter"
icc browser surface:2 scroll-into-view "#pricing"

icc browser surface:2 type "#search" "icc"
icc browser surface:2 fill "#email" --text "[email protected]"
icc browser surface:2 fill "#email" --text ""
icc browser surface:2 press Enter
icc browser surface:2 keydown Shift
icc browser surface:2 keyup Shift
icc browser surface:2 select "#region" "us-east"
icc browser surface:2 scroll --dy 800 --snapshot-after
icc browser surface:2 scroll --selector "#log-view" --dx 0 --dy 400

Inspection

Utilisez les getters structurés pour les scripts et les snapshots/captures d'écran pour la revue humaine.

icc browser surface:2 snapshot --interactive --compact
icc browser surface:2 snapshot --selector "main" --max-depth 5
icc browser surface:2 screenshot --out /tmp/icc-page.png

icc browser surface:2 get title
icc browser surface:2 get url
icc browser surface:2 get text "h1"
icc browser surface:2 get html "main"
icc browser surface:2 get value "#email"
icc browser surface:2 get attr "a.primary" --attr href
icc browser surface:2 get count ".row"
icc browser surface:2 get box "#checkout"
icc browser surface:2 get styles "#total" --property color

icc browser surface:2 is visible "#checkout"
icc browser surface:2 is enabled "button[type='submit']"
icc browser surface:2 is checked "#terms"

icc browser surface:2 find role button --name "Continue"
icc browser surface:2 find text "Order confirmed"
icc browser surface:2 find label "Email"
icc browser surface:2 find placeholder "Search"
icc browser surface:2 find alt "Product image"
icc browser surface:2 find title "Open settings"
icc browser surface:2 find testid "save-btn"
icc browser surface:2 find first ".row"
icc browser surface:2 find last ".row"
icc browser surface:2 find nth 2 ".row"

icc browser surface:2 highlight "#checkout"

Évaluation et injection JavaScript

icc browser surface:2 eval "document.title"
icc browser surface:2 eval --script "window.location.href"

icc browser surface:2 addinitscript "window.__iccReady = true;"
icc browser surface:2 addscript "document.querySelector('#name')?.focus()"
icc browser surface:2 addstyle "#debug-banner { display: none !important; }"

État

Les commandes de données de session couvrent les cookies, le stockage local/session et les snapshots complets de l'état du navigateur.

icc browser surface:2 cookies get
icc browser surface:2 cookies get --name session_id
icc browser surface:2 cookies set session_id abc123 --domain example.com --path /
icc browser surface:2 cookies clear --name session_id
icc browser surface:2 cookies clear --all

icc browser surface:2 storage local set theme dark
icc browser surface:2 storage local get theme
icc browser surface:2 storage local clear
icc browser surface:2 storage session set flow onboarding
icc browser surface:2 storage session get flow

icc browser surface:2 state save /tmp/icc-browser-state.json
icc browser surface:2 state load /tmp/icc-browser-state.json

Onglets

Les opérations sur les onglets du navigateur correspondent aux surfaces navigateur dans le groupe d'onglets navigateur actif.

icc browser surface:2 tab list
icc browser surface:2 tab new https://example.com/pricing

# Switch by index or by target surface
icc browser surface:2 tab switch 1
icc browser surface:2 tab switch surface:7

# Close current tab or a specific target
icc browser surface:2 tab close
icc browser surface:2 tab close surface:7

Console et erreurs

icc browser surface:2 console list
icc browser surface:2 console clear

icc browser surface:2 errors list
icc browser surface:2 errors clear

Dialogues

icc browser surface:2 dialog accept
icc browser surface:2 dialog accept "Confirmed by automation"
icc browser surface:2 dialog dismiss

Frames

# Enter an iframe context
icc browser surface:2 frame "iframe[name='checkout']"
icc browser surface:2 click "#pay-now"

# Return to the top-level document
icc browser surface:2 frame main

Téléchargements

icc browser surface:2 click "a#download-report"
icc browser surface:2 download --path /tmp/report.csv --timeout-ms 30000

Patterns courants

Naviguer, attendre, inspecter

icc browser open https://example.com/login
icc browser surface:2 wait --load-state complete --timeout-ms 15000
icc browser surface:2 snapshot --interactive --compact
icc browser surface:2 get title

Remplir un formulaire et vérifier le texte de succès

icc browser surface:2 fill "#email" --text "[email protected]"
icc browser surface:2 fill "#password" --text "$PASSWORD"
icc browser surface:2 click "button[type='submit']" --snapshot-after
icc browser surface:2 wait --text "Welcome"
icc browser surface:2 is visible "#dashboard"

Capturer les artefacts de debug en cas d'échec

icc browser surface:2 console list
icc browser surface:2 errors list
icc browser surface:2 screenshot --out /tmp/icc-failure.png
icc browser surface:2 snapshot --interactive --compact

Persister et restaurer la session du navigateur

icc browser surface:2 state save /tmp/session.json
# ...later...
icc browser surface:2 state load /tmp/session.json
icc browser surface:2 reload