appium - 如何在 Appium 中检测滑动完成
问题描述
Android 有一个滑动容器视图,我用 Appium 滑动它来刷新 ListView。如何使用 Appium 来检测滑动的完成?
编辑
对不起,我的问题不清楚。我想要一种方法让 Appium 不检测滑动手势何时完成,而是何时完成刷新动画。也许我应该问一个单独的问题。
解决方案
我过去有过类似的情况。所以我把我所有的屏幕元素都放在了 PageObject 设计模式中。因此,在每次滑动后,我只是重新初始化屏幕,并通过该逻辑重新初始化其所有元素,并且可以肯定的是,我已经检查了该屏幕上是否加载了某些元素,因此在伪代码中将如下所示:
public void checkSwipeScreen(){
swipe(driver, DIRECTION.LEFT, 5);
Screen screen = new Screen(driver);
Assert.assertTrue(screen.elementIsLoaded(button), "Screen is not loaded properly");
}
因此,如果在您的新屏幕上加载了所有/一个元素,则滑动成功。
使用最后一个参数您可以控制滑动是否更长(持续时间长)。
这里是,如果你喜欢,刷卡方法:
public static void swipe(MobileDriver driver, DIRECTION direction, long duration) {
Dimension size = driver.manage().window().getSize();
int startX = 0;
int endX = 0;
int startY = 0;
int endY = 0;
switch (direction) {
case RIGHT:
startY = (int) (size.height / 2);
startX = (int) (size.width * 0.90);
endX = (int) (size.width * 0.05);
new TouchAction(driver)
.press(startX, startY)
.waitAction(Duration.ofMillis(duration))
.moveTo(endX, startY)
.release()
.perform();
break;
case LEFT:
startY = (int) (size.height / 2);
startX = (int) (size.width * 0.05);
endX = (int) (size.width * 0.90);
new TouchAction(driver)
.press(startX, startY)
.waitAction(Duration.ofMillis(duration))
.moveTo(endX, startY)
.release()
.perform();
break;
case UP:
endY = (int) (size.height * 0.70);
startY = (int) (size.height * 0.30);
startX = (size.width / 2);
new TouchAction(driver)
.press(startX, startY)
.waitAction(Duration.ofMillis(duration))
.moveTo(endX, startY)
.release()
.perform();
break;
case DOWN:
startY = (int) (size.height * 0.70);
endY = (int) (size.height * 0.30);
startX = (size.width / 2);
new TouchAction(driver)
.press(startX, startY)
.waitAction(Duration.ofMillis(duration))
.moveTo(startX, endY)
.release()
.perform();
break;
}
}
和枚举
public enum DIRECTION {
DOWN, UP, LEFT, RIGHT;
}
希望这可以帮助,
推荐阅读
- buildroot - 如何将二进制文件添加到 buildroot 生成的图像?
- php - Codeigniter 3 - sess_time_to_update 和 sess_save_path
- r - 退出闪亮的应用程序时添加“您确定要离开此页面”警报消息
- function - 尝试使用带有 PowerShell Azure 功能的 Connect-PnPOnline 连接到 office 365 时出现异常
- networking - 我正在慢慢发疯。这一定有一个简单的答案。localhost RPC 服务器如何告诉客户端他们在哪个端口上运行?
- ios - NSLog/OSLog 间歇性地显示在控制台中
- sql-server - 导入 Excel 数据似乎随机给出 Null 值
- html - Web 组件 - 不接受子元素
- javascript - 如何在JS中模拟按键
- java - Java 8 根据列表部分的条件过滤列表