跳到主要内容

滑动

在桌面/移动网页移动原生应用中在视口或元素内向特定方向滑动。

信息

移动原生应用的滑动基于W3C-actions协议,模拟手指按压和移动。 这与Android的mobile: scrollGesture 或iOS的mobile: scroll命令不同,后者基于Appium驱动协议, 且仅在NATIVE上下文的移动平台上可用。

此命令仅与以下最新组件一起工作:

  • Appium服务器(版本2.0.0或更高)
  • appium-uiautomator2-driver(用于Android)
  • appium-xcuitest-driver(用于iOS)

确保您的本地或基于云的Appium环境定期更新,以避免兼容性问题。

基于坐标的滑动

除非绝对必要,否则避免使用fromto选项。这些选项与设备相关,可能在不同设备上无法一致工作。 使用scrollableElement选项可在元素内进行可靠的滑动。

参数
名称类型详情
options
可选
object, booleanbrowser.swipe()的选项。桌面/移动网页的默认值:
{ direction: 'up', duration: 1500, percent: 0.95, scrollableElement: WebdriverIO.Element }
options.direction
可选
string可以是downupleftright之一,默认为up
仅限移动原生应用
向下
起始点:
您将手指放在屏幕上部。
移动:
您将手指向下滑动到屏幕底部。
动作:
根据上下文的不同而变化:
- 在主屏幕或应用程序中,通常会向上滚动内容。
- 从顶部边缘,通常会打开通知面板或快速设置。
- 在浏览器或阅读应用中,可用于滚动内容。
向左
起始点:
您将手指放在屏幕右侧。
移动:
您将手指水平向左滑动。
动作:
对此手势的响应取决于应用程序:
- 可以在轮播或一组图像中移动到下一项。
- 在导航上下文中,可能会返回上一页或关闭当前视图。
- 在主屏幕上,通常会切换到下一个虚拟桌面或屏幕。
向右
起始点:
您将手指放在屏幕左侧。
移动:
您将手指水平向右滑动。
动作:
类似于向左滑动,但方向相反:
-- 通常在轮播或图库中移动到上一项。
- 可用于打开应用中的侧边菜单或导航抽屉。
- 在主屏幕上,通常会切换到上一个虚拟桌面。
向上
起始点:
您将手指放在屏幕底部。
移动:
您将手指向上滑动到屏幕顶部。
动作:
根据上下文,可能会发生不同的操作:
- 在主屏幕或列表中,通常会向下滚动内容。
- 在全屏应用中,可能会打开其他选项或应用抽屉。
- 在某些界面上,可能会触发"刷新"操作或打开搜索栏。
options.duration
可选
number滑动的持续时间(毫秒)。默认为1500毫秒。值越低,滑动越快。
options.scrollableElement
可选
Element用于在其内部滑动的元素。如果未提供元素,iOS将使用以下选择器-ios predicate string:type == "XCUIElementTypeApplication",Android将使用以下选择器//android.widget.ScrollView'。如果多个元素匹配默认选择器,则默认情况下将选择第一个匹配元素。
仅限移动原生应用
options.percent
可选
number要滑动的(默认)可滚动元素的百分比。这是一个介于0和1之间的值。默认为0.95
切勿从屏幕的最上方|最下方|最左侧|最右侧滑动,您可能会触发例如通知栏或其他操作系统/应用功能,这可能导致意外结果。
如果提供了fromto,则此值无效。
以下值提供scrollableElement时有效,否则将被忽略。
options.from
可选
object滑动起点的x和y坐标。如果提供了scrollableElement,则这些坐标无效。
options.from.x
可选
number滑动起点的x坐标。
options.from.y
可选
number滑动起点的y坐标。
options.to
可选
object滑动终点的x和y坐标。如果提供了scrollableElement,则这些坐标无效。
options.to.x
可选
number滑动终点的x坐标。
options.to.y
可选
number滑动终点的y坐标。
示例
swipe.js
it('should execute a default swipe', async () => {
// Default will be a swipe from the bottom to the top, meaning it will swipe UP
await browser.swipe();
});

swipe.with.options.js
it('should execute a swipe with options', async () => {
await browser.swipe({
direction: 'left', // Swipe from right to left
duration: 5000, // Last for 5 seconds
percent: 0.5, // Swipe 50% of the scrollableElement
scrollableElement: $('~carousel'), // The element to swipe within
})
});

Welcome! How can I help?

WebdriverIO AI Copilot