도구
다음 도구들은 WebdriverIO MCP 서버를 통해 사용할 수 있습니다. 이 도구들을 통해 AI 어시스턴트가 브라우저와 모바일 애플리케이션을 자동화할 수 있습니다.
세션 관리
start_browser
Chrome 브라우저 세션을 시작합니다.
매개변수
| 매개변수 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
headless | boolean | 아니오 | false | 헤드리스 모드로 Chrome 실행 |
windowWidth | number | 아니오 | 1920 | 브라우저 창 너비 (400-3840) |
windowHeight | number | 아니오 | 1080 | 브라우저 창 높이 (400-2160) |
navigationUrl | string | 아니오 | - | 브라우저 시작 후 이동할 URL |
예제
Start a browser with 1920x1080 resolution and navigate to webdriver.io
지원
- 데스크톱 브라우저
start_app_session
Appium을 통해 iOS 또는 Android에서 모바일 앱 세션을 시작합니다.
매개변수
| 매개변수 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
platform | string | 예 | - | 자동화할 플랫폼: iOS 또는 Android |
deviceName | string | 예 | - | 기기 또는 시뮬레이터/에뮬레이터 이름 |
appPath | string | 아니오* | - | 앱 파일 경로 (.app, .ipa, 또는 .apk) |
platformVersion | string | 아니오 | - | OS 버전 (예: 17.0, 14) |
automationName | string | 아니오 | 자동 | XCUITest (iOS), UiAutomator2 또는 Espresso (Android) |
udid | string | 아니오 | - | 고유 기기 식별자 (실제 iOS 기기에 필요) |
noReset | boolean | 아니오 | false | 세션 간 앱 상태 유지 |
fullReset | boolean | 아니오 | true | 세션 전에 앱 제거 및 재설치 |
autoGrantPermissions | boolean | 아니오 | true | 자동으로 앱 권한 부여 |
autoAcceptAlerts | boolean | 아니오 | true | 자동으로 시스템 알림 수락 |
autoDismissAlerts | boolean | 아니오 | false | 알림 수락 대신 무시 |
appWaitActivity | string | 아니오 | - | 시작 시 기다릴 활동 (Android만 해당) |
newCommandTimeout | number | 아니오 | 60 | 비활성으로 인한 세션 타임아웃 전 시간(초) |
appiumHost | string | 아니오 | 127.0.0.1 | Appium 서버 호스트명 |
appiumPort | number | 아니오 | 4723 | Appium 서버 포트 |
appiumPath | string | 아니오 | / | Appium 서버 경로 |
*appPath를 제공하거나 이미 실행 중인 앱에 연결하기 위해 noReset: true가 필요합니다.
예제
Start an iOS app session on iPhone 15 simulator with my app at /path/to/app.app
지원
- iOS 시뮬레이터
- iOS 실제 기기
- Android 에뮬레이터
- Android 실제 기기
close_session
현재 브라우저 또는 앱 세션을 종료합니다.
매개변수
| 매개변수 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
detach | boolean | 아니오 | false | 세션 종료 대신 분리 (브라우저/앱 실행 상태 유지) |
참고
noReset: true 또는 appPath 없이 시작된 세션은 상태 보존을 위해 종료 시 자동으로 분리됩니다.
지원
- 데스크톱 브라우저
- 모바일 앱
탐색
navigate
URL로 이동합니다.
매개변수
| 매개변수 | 타입 | 필수 | 설명 |
|---|---|---|---|
url | string | 예 | 이동할 URL |
예제
Navigate to https://webdriver.io
지원
- 데스크톱 브라우저
요소 상호작용
click_element
선택자로 식별된 요소를 클릭합니다.
매개변수
| 매개변수 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
selector | string | 예 | - | CSS 선택자, XPath, 또는 모바일 선택자 |
scrollToView | boolean | 아니오 | true | 클릭하기 전 요소를 화면에 표시 |
timeout | number | 아니오 | 3000 | 요소 대기 최대 시간 (ms) |
참고
- WebdriverIO 텍스트 선택자 지원:
button=Exact text또는a*=Contains text - 스크롤 위치 지정에 중앙 정렬 사용
예제
Click the element with selector "#submit-button"
지원
- 데스크톱 브라우저
- 모바일 네이티브 앱
set_value
입력 필드에 텍스트를 입력합니다.
매개변수
| 매개변수 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
selector | string | 예 | - | 입력 요소의 선택자 |
value | string | 예 | - | 입력할 텍스트 |
scrollToView | boolean | 아니오 | true | 입력하기 전 요소를 화면에 표시 |
timeout | number | 아니오 | 3000 | 요소 대기 최대 시간 (ms) |
참고
새 텍스트를 입력하기 전 기존 값을 지웁니다.
예제
Set the value "john@example.com" in the element with selector "#email"
지원
- 데스크톱 브라우저
- 모바일 네이티브 앱
페이지 분석
get_visible_elements
현재 페이지나 화면에서 보이고 상호작용 가능한 요소들을 가져옵니다. 이는 상호작용 가능한 요소를 찾는 주요 도구입니다.
매개변수
| 매개변수 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
elementType | string | 아니오 | interactable | 요소 유형: interactable (버튼/링크/입력), visual (이미지/SVG), 또는 all |
inViewportOnly | boolean | 아니오 | true | 뷰포트에 보이는 요소만 반환 |
includeContainers | boolean | 아니오 | false | 레이아웃 컨테이너(ViewGroup, ScrollView 등) 포함 |
includeBounds | boolean | 아니오 | false | 요소 좌표(x, y, width, height) 포함 |
limit | number | 아니오 | 0 | 반환할 최대 요소 수 (0 = 무제한) |
offset | number | 아니오 | 0 | 건너뛸 요소 수 (페이지네이션용) |
반환값
{
"total": 42,
"showing": 20,
"hasMore": true,
"elements": [...]
}
웹 요소 포함: tagName, type, id, className, textContent, value, placeholder, href, ariaLabel, role, cssSelector, isInViewport
모바일 요소 포함: 여러 로케이터 전략(accessibility ID, resource ID, XPath, UiAutomator/predicates), 요소 타입, 텍스트, 선택적 바운드
참고
- 웹: 빠른 요소 감지를 위한 최적화된 브라우저 스크립트 사용
- 모바일: 효율적인 XML 페이지 소스 파싱(요소 쿼리를 위한 600개 이상이 아닌 단 2개의 HTTP 호출)
- 큰 페이지에서는 토큰 사용량을 줄이기 위해 페이지네이션(
limit과offset) 사용
예제
Get all visible elements on the page with their coordinates