appium-android - 如何滚动/滑动页面的一部分?
问题描述
我必须水平滚动页面的那一部分(它可以左右移动)。
怎么做?
我试图捕获页面的某个区域并滑动它,但 IDE 只是用 0 执行代码。然后我试图找到那个实际的元素并移动它,但仍然没有。在真正的应用程序中,您只需点击屏幕并将该部分向左或向右移动。
解决方案
滚动不同于滑动。当您滚动页面时,您不会将手指从屏幕上松开,而是在滚动时松开手指,并且页面移动的速度更加可控。
所以对于滚动尝试:
String scrollViewContainer_finder = "new UiSelector().resourceIdMatches(\".*id/Your_ID\")"; // Your_ID=element resource-id
String neededElement_finder = "new UiSelector().text(\"Your_Text\")";
WebElement abc = driver.findElement(MobileBy.AndroidUIAutomator("new UiScrollable(" + scrollViewContainer_finder + ")" +
".scrollIntoView(" + neededElement_finder + ")"));
用您正在寻找的屏幕上的任何单词替换 Your-Text。对于其他元素选项看这个。
刷卡:
方法:
public void swipe(int startX, int startY, int endX, int endY, int msDuration) {
TouchAction touchAction = new TouchAction((PerformsTouchActions) driver);
touchAction.press(PointOption.point(startX, startY))
.waitAction(WaitOptions.waitOptions(Duration.ofMillis(msDuration)))
.moveTo(PointOption.point(endX, endY))
.release();
示例用法:
swipe(600, 1750, 600, 400, 2000);
请注意:
- 要找到确切的开始和结束x,y:从设备/模拟器的“开发人员选项”中打开“显示指针位置”,然后您可以找到触摸屏幕任意位置的确切x,y。
- 为了更好的测试,您可以从开发者选项中关闭这些选项: 窗口动画比例/过渡动画比例/动画持续时间比例/
- 我发现正常的“msDuration”大约是 2000 毫秒。
- 对于任何滚动/滑动的使用,我强烈建议使用滑动方法。
推荐阅读
- python - 在子组列中查找“字符串”的出现并根据其出现标记主组
- java - 用 parquet 文件中的数据丰富 DataStream
- python - 如何使用样式表设置 qwidget 的背景颜色?
- wordpress - 是否有用于共享用户的确切/实时位置并使用联系表发送的 wordpress 插件或脚本?
- c# - C#如何确保在单个线程中执行等待操作
- arangodb - 如何仅对一个嵌套属性进行示例查询?
- php - 在具有两个不同表的多个列上选择不同的
- flutter - 便携式国际化
- redux - 流式输入 redux 操作 - 性能问题
- sql - 将 SUM 与左连接一起使用会得到错误的结果