Công cụ
Các công cụ sau đây có sẵn thông qua máy chủ WebdriverIO MCP. Những công cụ này cho phép trợ lý AI tự động hóa trình duyệt và ứng dụng di động.
Quản lý Phiên
start_browser
Khởi chạy một phiên trình duyệt Chrome.
Tham số
| Tham số | Kiểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
headless | boolean | Không | false | Chạy Chrome ở chế độ headless |
windowWidth | number | Không | 1920 | Chiều rộng cửa sổ trình duyệt (400-3840) |
windowHeight | number | Không | 1080 | Chiều cao cửa sổ trình duyệt (400-2160) |
navigationUrl | string | Không | - | URL để điều hướng đến sau khi khởi động trình duyệt |
Ví dụ
Start a browser with 1920x1080 resolution and navigate to webdriver.io
Hỗ trợ
- Desktop Browsers
start_app_session
Khởi chạy một phiên ứng dụng di động trên iOS hoặc Android thông qua Appium.
Tham số
| Tham số | Kiểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
platform | string | Có | - | Nền tảng để tự động hóa: iOS hoặc Android |
deviceName | string | Có | - | Tên của thiết bị hoặc simulator/emulator |
appPath | string | Không* | - | Đường dẫn đến tập tin ứng dụng (.app, .ipa, hoặc .apk) |
platformVersion | string | Không | - | Phiên bản hệ điều hành (ví dụ: 17.0, 14) |
automationName | string | Không | Auto | XCUITest (iOS), UiAutomator2 hoặc Espresso (Android) |
udid | string | Không | - | Mã định danh thiết bị duy nhất (bắt buộc cho thiết bị iOS thực) |
noReset | boolean | Không | false | Giữ nguyên trạng thái ứng dụng giữa các phiên |
fullReset | boolean | Không | true | Gỡ cài đặt và cài đặt lại ứng dụng trước phiên |
autoGrantPermissions | boolean | Không | true | Tự động cấp quyền cho ứng dụng |
autoAcceptAlerts | boolean | Không | true | Tự động chấp nhận các thông báo hệ thống |
autoDismissAlerts | boolean | Không | false | Từ chối (thay vì chấp nhận) các thông báo |
appWaitActivity | string | Không | - | Activity để đợi khi khởi động (chỉ Android) |
newCommandTimeout | number | Không | 60 | Số giây trước khi phiên hết hạn do không hoạt động |
appiumHost | string | Không | 127.0.0.1 | Hostname máy chủ Appium |
appiumPort | number | Không | 4723 | Cổng máy chủ Appium |
appiumPath | string | Không | / | Đường dẫn máy chủ Appium |
*Hoặc appPath phải được cung cấp, hoặc noReset: true để kết nối với ứng dụng đang chạy.
Ví dụ
Start an iOS app session on iPhone 15 simulator with my app at /path/to/app.app
Hỗ trợ
- iOS Simulators
- iOS Real Devices
- Android Emulators
- Android Real Devices
close_session
Đóng phiên trình duyệt hoặc ứng dụng hiện tại.
Tham số
| Tham số | Kiểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
detach | boolean | Không | false | Tách khỏi phiên thay vì đóng (giữ cho trình duyệt/ứng dụng tiếp tục chạy) |
Ghi chú
Các phiên với noReset: true hoặc không có appPath tự động tách khi đóng để bảo toàn trạng thái.
Hỗ trợ
- Desktop Browsers
- Mobile Apps
Điều hướng
navigate
Điều hướng đến một URL.
Tham số
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
url | string | Có | URL để điều hướng đến |
Ví dụ
Navigate to https://webdriver.io
Hỗ trợ
- Desktop Browsers
Tương tác Phần tử
click_element
Nhấp vào một phần tử được xác định bởi một bộ chọn.
Tham số
| Tham số | Kiểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
selector | string | Có | - | Bộ chọn CSS, XPath, hoặc bộ chọn di động |
scrollToView | boolean | Không | true | Cuộn phần tử vào tầm nhìn trước khi nhấp |
timeout | number | Không | 3000 | Thời gian tối đa để đợi phần tử (ms) |
Ghi chú
- Hỗ trợ bộ chọn văn bản WebdriverIO:
button=Exact texthoặca*=Contains text - Sử dụng căn chỉnh trung tâm cho vị trí cuộn
Ví dụ
Click the element with selector "#submit-button"
Hỗ trợ
- Desktop Browsers
- Mobile Native Apps
set_value
Nhập văn bản vào một trường nhập liệu.
Tham số
| Tham số | Kiểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
selector | string | Có | - | Bộ chọn cho phần tử nhập liệu |
value | string | Có | - | Văn bản để nhập |
scrollToView | boolean | Không | true | Cuộn phần tử vào tầm nhìn trước khi nhập |
timeout | number | Không | 3000 | Thời gian tối đa để đợi phần tử (ms) |
Ghi chú
Xóa giá trị hiện có trước khi nhập văn bản mới.
Ví dụ
Set the value "john@example.com" in the element with selector "#email"
Hỗ trợ
- Desktop Browsers
- Mobile Native Apps
Phân tích Trang
get_visible_elements
Lấy các phần tử hiển thị và có thể tương tác trên trang hiện tại hoặc màn hình. Đây là công cụ chính để phát hiện những phần tử có sẵn để tương tác.
Tham số
| Tham số | Kiểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
elementType | string | Không | interactable | Loại phần tử: interactable (nút/liên kết/nhập liệu), visual (hình ảnh/SVG), hoặc all |
inViewportOnly | boolean | Không | true | Chỉ trả về các phần tử hiển thị trong khung nhìn |
includeContainers | boolean | Không | false | Bao gồm các container bố cục (ViewGroup, ScrollView, v.v.) |
includeBounds | boolean | Không | false | Bao gồm tọa độ phần tử (x, y, width, height) |
limit | number | Không | 0 | Số phần tử tối đa để trả về (0 = không giới hạn) |
offset | number | Không | 0 | Số phần tử để bỏ qua (để phân trang) |
Trả về
{
"total": 42,
"showing": 20,
"hasMore": true,
"elements": [...]
}
Các phần tử Web bao gồm: tagName, type, id, className, textContent, value, placeholder, href, ariaLabel, role, cssSelector, isInViewport
Các phần tử Di động bao gồm: Nhiều chiến lược định vị (accessibility ID, resource ID, XPath, UiAutomator/predicates), loại phần tử, văn bản, và tùy chọn giới hạn
Ghi chú
- Web: Sử dụng script trình duyệt được tối ưu hóa để phát hiện phần tử nhanh
- Di động: Sử dụng phân tích nguồn trang XML hiệu quả (2 HTTP calls thay vì 600+ cho các truy vấn phần tử)
- Sử dụng phân trang (
limitvàoffset) cho các trang lớn để giảm sử dụng token
Ví dụ
Get all visible elements on the page with their coordinates
Hỗ trợ
- Desktop Browsers
- Mobile Apps
get_accessibility
Lấy cây trợ năng của trang hiện tại với thông tin ngữ nghĩa về vai trò, tên và trạng thái.
Tham số
| Tham số | Kiểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
limit | number | Không | 100 | Số nút tối đa để trả về (0 = không giới hạn) |
offset | number | Không | 0 | Số nút để bỏ qua (để phân trang) |
roles | string[] | Không | All | Lọc theo vai trò cụ thể (ví dụ: ["button", "link", "textbox"]) |
namedOnly | boolean | Không | true | Chỉ trả về các nút có tên/nhãn |
Trả về
{
"total": 85,
"showing": 100,
"hasMore": false,
"nodes": [
{ "role": "button", "name": "Submit" },
{ "role": "link", "name": "Home" }
]
}