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 Automator
和driver.swipe
之间有什么不同。
使用UI Automator
,我可以滚动并找到element\elements
和text\text contains\id\text starts with
:
new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text("' + text + '").instance(0))')
而driver.swipe
是x
和y
【问题讨论】:
【参考方案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滚动屏幕元素的主要内容,如果未能解决你的问题,请参考以下文章