java - 基于 Android 模拟器中特定定位器的最佳向上/向下滚动方法是什么?

标签 java android selenium appium emulation

我已经尝试了互联网上所有可用的方法,但没有一个有效。

使用 Appium 1.15 和 Java-Client 7.0.0。

问题是, 如果,

driver.findElementByAndroidUIAutomator("new UiScrollable( new UiSelector().scrollable(true).instance(0)).scrollIntoView"+"(new UiSelector().text(\"" + text + "\").instance(0))");
使用

,然后它不断滚动直到页面末尾,然后失败。对我来说,“文本”不仅仅是一个按钮或文本框。它可以是页面上的一个简单的非功能性文本,下面将显示一个下拉菜单。

在另一种方法中:

TouchAction action = new TouchAction((PerformsTouchActions) driver);
    WebElement phone = driver.findElement(start);
    WebElement contact = driver.findElement(end);
    action.press((PointOption) phone)
    .waitAction()
    .moveTo((PointOption) contact)
    .release()
    .perform();

在查找元素本身时失败。这意味着,它不会从 driver.findElemet(start) 行开始,因为该元素位于屏幕底部,我正是需要滚动到该位置。

请帮忙!

最佳答案

如果元素定位器正确并且您确认,请尝试使用 driver.flick() 命令。它无需等待即可执行相同的操作。 “等待时间”(您在任何滚动类函数中使用“持续时间”参数定义它)有许多不同设备屏幕尺寸的问题。

例如:您有 3 个元素是一个页面: A 、 B 、 C 您尝试在 5 英寸屏幕尺寸中从 A 滚动到 B。相同的代码可能在 7 英寸屏幕尺寸中从 A 滚动到 C! 所以 driver.flick() 解决了这个问题。

关于java - 基于 Android 模拟器中特定定位器的最佳向上/向下滚动方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60496468/

相关文章:

android - 两个AlertDialog、onCancel和 "Attempt to finish an input event, but the input event receiver has already been disposed. "

c# - 如何使用 LINQ 在 C# 中查找嵌套的 selenium WebElement?

Java:我的 Prim 看起来怎么样?

java - Apache Crunch是否随附Hadoop MapReduce API?

java - J3D API (Java) 中的 "Refers to the missing type Point3d"

java - java中使用hashmap的字典

java - 为什么 Java 代码在移入函数时不起作用?

java - 使用 td api 获取前 200 条聊天记录

selenium - Docker 中的 Nightwatch 仅适用于 Phantom

ios - WebDriverAgent 有问题 - Appium/Xcode