工具
以下工具可通过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 | 否 | - | 操作系统版本(例如,17.0, 14) |
automationName | string | 否 | Auto | 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 | 等待元素的最长时间(毫秒) |
注意
- 支持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 | 等待元素的最长时间(毫秒) |
注意
在输入新文本前清除现有值。
示例
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": [...]
}
Web元素包括: tagName, type, id, className, textContent, value, placeholder, href, ariaLabel, role, cssSelector, isInViewport
移动元素包括: 多种定位策略(accessibility ID, resource ID, XPath, UiAutomator/predicates)、元素类型、文本和可选的边界
注意
- Web:使用优化的浏览器脚本进行快速元素检测
- 移动:使用高效的XML页面源分析(2个HTTP调用 vs 600+元素查询)
- 对于大页面,使用分页(
limit和offset)来减少令牌使用
示例
Get all visible elements on the page with their coordinates