브라우저 자동화

icc 브라우저 명령 그룹은 icc 브라우저 서피스에 대한 브라우저 자동화를 제공합니다. 내비게이션, DOM 엘리먼트 상호작용, 페이지 상태 검사, JavaScript 평가, 브라우저 세션 데이터 관리에 사용합니다.

명령 인덱스

카테고리하위 명령
내비게이션 및 대상 지정identify, open, open-split, navigate, back, forward, reload, url, focus-webview, is-webview-focused
대기wait
DOM 상호작용click, dblclick, hover, focus, check, uncheck, scroll-into-view, type, fill, press, keydown, keyup, select, scroll
검사snapshot, screenshot, get, is, find, highlight
JavaScript 및 주입eval, addinitscript, addscript, addstyle
프레임, 다이얼로그, 다운로드frame, dialog, download
상태 및 세션 데이터cookies, storage, state
탭 및 로그tab, console, errors

브라우저 서피스 대상 지정

대부분의 하위 명령에는 대상 서피스가 필요합니다. 위치 인수 또는 --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

내비게이션

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

대기

셀렉터, 텍스트, URL 프래그먼트, 로드 상태 또는 JavaScript 조건이 충족될 때까지 차단하려면 wait를 사용하세요.

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"

DOM 상호작용

변경 작업은 스크립트에서 빠른 확인을 위해 --snapshot-after를 지원합니다.

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

검사

스크립트에는 구조화된 getter를 사용하고, 사람이 검토할 때는 스냅샷/스크린샷을 사용하세요.

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"

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; }"

상태

세션 데이터 명령은 쿠키, 로컬/세션 스토리지, 전체 브라우저 상태 스냅샷을 다룹니다.

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

브라우저 탭 작업은 활성 브라우저 탭 그룹의 브라우저 서피스에 매핑됩니다.

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

콘솔 및 오류

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

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

다이얼로그

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

프레임

# 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

다운로드

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

일반적인 패턴

내비게이션, 대기, 검사

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

폼 작성 및 성공 텍스트 확인

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"

실패 시 디버그 아티팩트 캡처

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

브라우저 세션 저장 및 복원

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