跳到主要内容

工具

以下工具可通过WebdriverIO MCP服务器获取。这些工具使AI助手能够自动化浏览器和移动应用程序。

会话管理

start_browser

启动Chrome浏览器会话。

参数

参数类型必填默认值描述
headlessbooleanfalse以无头模式运行Chrome
windowWidthnumber1920浏览器窗口宽度(400-3840)
windowHeightnumber1080浏览器窗口高度(400-2160)
navigationUrlstring-启动浏览器后导航到的URL

示例

Start a browser with 1920x1080 resolution and navigate to webdriver.io

支持

  • 桌面浏览器

start_app_session

通过Appium在iOS或Android上启动移动应用程序会话。

参数

参数类型必填默认值描述
platformstring-自动化平台:iOSAndroid
deviceNamestring-设备或模拟器/仿真器的名称
appPathstring否*-应用程序文件路径(.app, .ipa, 或 .apk)
platformVersionstring-操作系统版本(例如,17.0, 14)
automationNamestringAutoXCUITest(iOS),UiAutomator2Espresso(Android)
udidstring-唯一设备标识符(真实iOS设备需要)
noResetbooleanfalse在会话之间保留应用程序状态
fullResetbooleantrue会话前卸载并重新安装应用程序
autoGrantPermissionsbooleantrue自动授予应用程序权限
autoAcceptAlertsbooleantrue自动接受系统提示
autoDismissAlertsbooleanfalse关闭(而不是接受)提示
appWaitActivitystring-启动时等待的活动(仅Android)
newCommandTimeoutnumber60因不活动导致会话超时的秒数
appiumHoststring127.0.0.1Appium服务器主机名
appiumPortnumber4723Appium服务器端口
appiumPathstring/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

关闭当前浏览器或应用程序会话。

参数

参数类型必填默认值描述
detachbooleanfalse从会话分离而不是关闭(保持浏览器/应用运行)

注意

设置noReset: true或没有appPath的会话会在关闭时自动分离以保留状态。

支持

  • 桌面浏览器
  • 移动应用

导航

导航到URL。

参数

参数类型必填描述
urlstring要导航到的URL

示例

Navigate to https://webdriver.io

支持

  • 桌面浏览器

元素交互

click_element

点击由选择器标识的元素。

参数

参数类型必填默认值描述
selectorstring-CSS选择器、XPath或移动选择器
scrollToViewbooleantrue点击前将元素滚动到视图中
timeoutnumber3000等待元素的最长时间(毫秒)

注意

  • 支持WebdriverIO文本选择器:button=Exact texta*=Contains text
  • 滚动定位使用中心对齐

示例

Click the element with selector "#submit-button"

支持

  • 桌面浏览器
  • 移动原生应用

set_value

在输入字段中输入文本。

参数

参数类型必填默认值描述
selectorstring-输入元素的选择器
valuestring-要输入的文本
scrollToViewbooleantrue输入前将元素滚动到视图中
timeoutnumber3000等待元素的最长时间(毫秒)

注意

在输入新文本前清除现有值。

示例

Set the value "john@example.com" in the element with selector "#email"

支持

  • 桌面浏览器
  • 移动原生应用

页面分析

get_visible_elements

获取当前页面或屏幕上可见和可交互的元素。这是发现可用于交互的元素的主要工具。

参数

参数类型必填默认值描述
elementTypestringinteractable元素类型:interactable(按钮/链接/输入)、visual(图像/SVG)或all
inViewportOnlybooleantrue仅返回视口中可见的元素
includeContainersbooleanfalse包括布局容器(ViewGroup, ScrollView等)
includeBoundsbooleanfalse包括元素坐标(x, y, width, height)
limitnumber0最大返回元素数(0 = 无限制)
offsetnumber0要跳过的元素数(用于分页)

返回值

{
"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+元素查询)
  • 对于大页面,使用分页(limitoffset)来减少令牌使用

示例

Get all visible elements on the page with their coordinates

支持

  • 桌面浏览器
  • 移动应用

get_accessibility

获取当前页面的无障碍树,包含有关角色、名称和状态的语义信息。

参数

参数类型必填默认值描述
limitnumber100最大返回节点数(0 = 无限制)
offsetnumber0要跳过的节点数(用于分页)
rolesstring[]全部过滤特定角色(例如,["button", "link", "textbox"])
namedOnlybooleantrue仅返回有名称/标签的节点

返回值

{
"total": 85,
"showing": 100,
"hasMore": false,
"nodes": [
{ "role": "button", "name": "Submit" },
{ "role": "link", "name": "Home" }
]
}

注意

  • 仅限浏览器。对于移动应用,请使用get_visible_elements
  • get_visible_elements未返回预期元素时很有用
  • namedOnly: true过滤掉匿名容器并减少噪音

支持

  • 桌面浏览器

截图

take_screenshot

捕获当前视口的截图。

参数

参数类型必填描述
outputPathstring保存截图文件的路径。如果省略,返回base64数据

返回值

Base64编码的图像数据(PNG或JPEG)及大小信息。

注意

截图会自动优化:

  • 最大尺寸:2000px(如果更大则缩小)
  • 最大文件大小:1MB
  • 格式:最大压缩的PNG,或根据需要JPEG以满足大小限制

支持

  • 桌面浏览器
  • 移动应用

滚动

scroll

将页面向上或向下滚动指定像素数。

参数

参数类型必填默认值描述
directionstring-滚动方向:updown
pixelsnumber500要滚动的像素数

注意

仅限浏览器。对于移动滚动,请使用swipe工具。

支持

  • 桌面浏览器

Cookie管理

get_cookies

从当前会话获取cookies。

参数

参数类型必填描述
namestring要获取的特定cookie名称(省略则获取所有cookie)

返回值

Cookie对象,包含name、value、domain、path、expiry、secure和httpOnly属性。

支持

  • 桌面浏览器

在当前会话中设置cookie。

参数

参数类型必填默认值描述
namestring-Cookie名称
valuestring-Cookie值
domainstring当前Cookie域
pathstring/Cookie路径
expirynumber-过期时间为Unix时间戳(秒)
secureboolean-Secure标志
httpOnlyboolean-HttpOnly标志
sameSitestring-SameSite属性:strictlaxnone

支持

  • 桌面浏览器

delete_cookies

从当前会话删除cookies。

参数

参数类型必填描述
namestring要删除的特定cookie名称(省略则删除所有)

支持

  • 桌面浏览器

触摸手势(移动)

tap_element

点击元素或屏幕坐标。

参数

参数类型必填描述
selectorstring否*要点击的元素选择器
xnumber否*点击的X坐标
ynumber否*点击的Y坐标

*需要selector或同时提供xy

支持

  • 移动应用

swipe

在指定方向执行滑动手势。

参数

参数类型必填默认值描述
directionstring-滑动方向:updownleftright
durationnumber500滑动持续时间(毫秒)(100-5000)
percentnumber0.5/0.95屏幕滑动百分比(0-1)

注意

  • 默认百分比:垂直滑动为0.5,水平滑动为0.95
  • 方向表示内容移动:"向上滑动"使内容向上滚动

示例

Swipe up to scroll down the screen

支持

  • 移动应用

drag_and_drop

将元素拖动到另一个元素或坐标。

参数

参数类型必填描述
sourceSelectorstring要拖动的源元素选择器
targetSelectorstring否*要放置到的目标元素选择器
xnumber否*目标X偏移(如果没有targetSelector)
ynumber否*目标Y偏移(如果没有targetSelector)
durationnumber默认

*需要targetSelector或同时提供xy

支持

  • 移动应用

应用生命周期(移动)

get_app_state

获取应用程序的当前状态。

参数

参数类型必填描述
bundleIdstring应用标识符(iOS的bundle ID,Android的package name)

返回值

应用状态:not installed, not running, running in background (suspended), running in background, 或 running in foreground

支持

  • 移动应用

上下文切换(混合应用)

get_contexts

列出所有可用上下文(原生和webview)。

参数

返回值

上下文名称数组(例如,["NATIVE_APP", "WEBVIEW_com.example.app"])。

支持

  • 移动混合应用

get_current_context

获取当前活动的上下文。

参数

返回值

当前上下文名称(例如,NATIVE_APPWEBVIEW_*)。

支持

  • 移动混合应用

switch_context

在原生和webview上下文之间切换。

参数

参数类型必填描述
contextstringget_contexts获取的上下文名称或索引(从1开始)

示例

Switch to the WEBVIEW_com.example.app context

支持

  • 移动混合应用

设备控制(移动)

rotate_device

将设备旋转到特定方向。

参数

参数类型必填描述
orientationstringPORTRAITLANDSCAPE

支持

  • 移动应用

hide_keyboard

隐藏屏幕键盘。

参数

支持

  • 移动应用

get_geolocation

获取当前GPS坐标。

参数

返回值

包含latitudelongitudealtitude的对象。

支持

  • 移动应用

set_geolocation

设置设备GPS坐标。

参数

参数类型必填描述
latitudenumber纬度坐标(-90到90)
longitudenumber经度坐标(-180到180)
altitudenumber海拔(米)

示例

Set geolocation to San Francisco (37.7749, -122.4194)

支持

  • 移动应用

脚本执行

execute_script

在浏览器中执行JavaScript或通过Appium执行移动命令。

参数

参数类型必填描述
scriptstringJavaScript代码(浏览器)或移动命令(如mobile: pressKey)
argsarray脚本的参数

浏览器示例

// Get page title
execute_script({ script: "return document.title" })

// Get scroll position
execute_script({ script: "return window.scrollY" })

// Click element by selector
execute_script({ script: "arguments[0].click()", args: ["#myButton"] })

移动(Appium)示例

// Press back key (Android)
execute_script({ script: "mobile: pressKey", args: [{ keycode: 4 }] })

// Activate app
execute_script({ script: "mobile: activateApp", args: [{ appId: "com.example" }] })

// Terminate app
execute_script({ script: "mobile: terminateApp", args: [{ appId: "com.example" }] })

// Deep link
execute_script({ script: "mobile: deepLink", args: [{ url: "myapp://screen", package: "com.example" }] })

// Shell command (Android)
execute_script({ script: "mobile: shell", args: [{ command: "dumpsys", args: ["battery"] }] })

常用Android按键代码

按键代码
BACK4
HOME3
ENTER66
MENU82
SEARCH84

更多移动命令

有关可用Appium移动命令的完整列表,请参阅:

支持

  • 桌面浏览器
  • 移动应用(通过Appium移动命令)

Welcome! How can I help?

WebdriverIO AI Copilot