滑动
在桌面/移动网页和移动原生应用中在视口或元素内向特定方向滑动。
信息
移动原生应用的滑动基于W3C-actions协议,模拟手指按压和移动。
这与Android的mobile: scrollGesture
或iOS的mobile: scroll
命令不同,后者基于Appium驱动协议,
且仅在NATIVE上下文的移动平台上可用。
此命令仅与以下最新组件一起工作:
- Appium服务器(版本2.0.0或更高)
appium-uiautomator2-driver
(用于Android)appium-xcuitest-driver
(用于iOS)
确保您的本地或基于云的Appium环境定期更新,以避免兼容性问题。
基于坐标的滑动
除非绝对必要,否则避免使用from
和to
选项。这些选项与设备相关,可能在不同设备上无法一致工作。
使用scrollableElement
选项可在元素内进行可靠的滑动。
参数
名称 | 类型 | 详情 |
---|---|---|
options 可选 | object, boolean | browser.swipe() 的选项。桌面/移动网页的默认值:{ direction: 'up', duration: 1500, percent: 0.95, scrollableElement: WebdriverIO.Element } |
options.direction 可选 | string | 可以是down 、up 、left 或right 之一,默认为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 。切勿从屏幕的最上方|最下方|最左侧|最右侧滑动,您可能会触发例如通知栏或其他操作系统/应用功能,这可能导致意外结果。 如果提供了 from 和to ,则此值无效。 |
以下值仅在未提供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
})
});