Appium使用swipe滚动屏幕元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Appium使用swipe滚动屏幕元素相关的知识,希望对你有一定的参考价值。

参考技术A 手机上操作时,最常见的操作就是滑动操作,在app自动化测试时,可使用Swipe关键字,即将坐标由开始位置移到结束位置,即可实现屏幕下拉,使需要测试的元素可见

Arguments:[ start_x | start_y | offset_x | offset_y | duration=1000 ]

如果就简单的输入指定元素的坐标位置,遇到手机屏幕大小改变,或者参数更新,就得重新修改坐标,这无疑是件很麻烦的事情,所以采取小步快跑的方式,每次滑动一小段,然后循环,一直到出现了想要的元素才停止,基于该思路,在RF中封装关键字:

如果是向下滚动,纵坐标是从大到小,向上滚动,反之。

UI Automator 和 driver.swipe via appium 有啥区别

【中文标题】UI Automator 和 driver.swipe via appium 有啥区别【英文标题】:What is the different between UI Automator and driver.swipe via appiumUI Automator 和 driver.swipe via appium 有什么区别 【发布时间】:2021-04-21 10:57:58 【问题描述】:

当我尝试使用滚动查找元素时,我想知道UI Automatordriver.swipe 之间有什么不同。

使用UI Automator,我可以滚动并找到element\elementstext\text contains\id\text starts with

new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text("' + text + '").instance(0))')

driver.swipexy

【问题讨论】:

【参考方案1】:

不同之处在于实现和目的:

UIAutomator

通过 UIAutomator 搜索元素允许实际向上/向下滚动视图到可搜索元素。首先,它是一个搜索动作,如果你有一个可滚动的视图并且知道它里面的元素,你可以用它来滚动。所以它需要: 使用scrollable=true 属性查看 知道元素 id、文本等来定位它 不能使用坐标 如果找不到元素则失败 不精确,一旦找到元素就停止滚动
MobileElement firstClickableEl = driver.findElement(MobileBy.AndroidUIAutomator("new UiSelector().clickable(true)"))
MobileElement elementInView = driver.findElement(MobileBy.AndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text("' + text + '").instance(0))')
"))

More信息

动作 API

Actions API 用于不同的手势,如触摸、点击、拖放、swipe 等。

无需定位元素 可以同时使用坐标和元素 如果您传递正确的坐标,则更精确
TouchAction swipe = new TouchAction(driver)
    .press(element(images.get(2),-10, center.y - location.y))
    .waitAction(waitOptions(ofSeconds(2)))
    .moveTo(element(gallery,10,center.y - location.y))
    .release();
swipe.perform();

More信息

【讨论】:

2 个问题:1. UI Automator 也适用于 iOS 吗? 2. 说在 UI Automator 的帮助下有更大的灵活性对吗? (使用文本搜索,文本包含,文本开头,id,正则表达式) 1. UIAutomator 仅适用于 Android。您可以检查 iOS 原生选项。 2. 这真的取决于你的目标:如果你想滑动到视图中的元素,使用 UIAutomator;如果您想检查滑动功能/无法识别目标元素,请使用 Actions API。它们在其功能范围内都足够灵活。我在同一个项目中使用两者,所以不要限制自己

以上是关于Appium使用swipe滚动屏幕元素的主要内容,如果未能解决你的问题,请参考以下文章

Python+Appium自动化之swipe()滑动页面

3.Appium滑动函数swipe

如何使用 TouchAction 滚动 Appium 1.7.1

Appium自动测试框架常用API

Appium

Appium滑动函数:Swipe