gpt4 book ai didi

java - 无法使用 Java 客户端使用 Appium 滚动 Android 应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:31 26 4
gpt4 key购买 nike

我无法使用 Appium 向下滚动到 Android 应用程序中任何页面的底部。尝试了多种方法,包括在 Stack Overflow 上找到的方法。 (这个挑战似乎很常见。)然而,所有的尝试都失败了。

环境:

  • Appium 版本:1.6.2
  • Appium 客户端:Java (java-client-6.1.0.jar)
  • 安卓版本:5.1、6.0.1、7.1.1
  • Java版本:jre1.8.0_171
  • Selenium 版本:selenium-java-3.13.0
  • 应用类型:Cordova(混合);该应用程序是使用 Cordova 构建的,但在运行时 System.out.println(driver.getContext()); ,结果是 NATIVE_APP

  • 请分享可以解决此问题的任何替代方案或改进。非常感谢任何有用的建议!

    以下总结了尝试的各种方法:
  • 方法:scrollIntoView()(各种实现)
  • driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView(resourceId(\"send-to-email-app\"));").click();
  • 来源:Udemy 类(class)
  • 错误:不滚动且没有错误

  • 方法:尝试 catch > scrollIntoView()
  • try {
    driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView(text(\"Send\"))");
    }catch(Exception e) {
    System.out.println("We got an error scrolling!");
    }
  • 来源:https://stackoverflow.com/questions/39658626/how-to-scroll-top-to-botton-using-android-driver
  • 错误:部分有效:页面向下滚动但不够远

  • 方法:刷卡
  • driver.swipe(0, Startpoint,0,scrollEnd,1000);
  • 来源:https://stackoverflow.com/questions/39130591/swipe-or-scroll-to-bottom-in-appium-android
  • 错误:不推荐使用滑动

  • 方法:touchAction.longPress + moveTo
  • ...touchAction.longPress(fromX, fromY).moveTo(toX, toY).release().perform();
  • 来源:https://stackoverflow.com/questions/44282417/how-to-scroll-with-appium-1-7-1-using-touchaction
  • 错误:“无法解析驱动程序”

  • 方法:touchAction.longPress + moveTo
  • TouchAction touchAction = new TouchAction(driver);
    touchAction.longPress(10, 10).moveTo(x, y).release().perform();
  • 来源:https://stackoverflow.com/questions/44282417/how-to-scroll-with-appium-1-7-1-using-touchaction
  • 错误:“TouchAction 类型中的 longPress(LongPressOptions) 方法不适用于参数 (int, int)”

  • 方法:touch.longPress + moveTo
  • ...TouchAction touch = new TouchAction(driver);
    touch.longPress(co_ordinates[0], co_ordinates[1]).moveTo(dinates[0], dinates[1]).release().perform();
  • 来源:https://stackoverflow.com/questions/50304699/how-to-scroll-to-specific-element-inlatest-version-of-appium-using-java
  • 错误:“外卖无法解决”

  • 方法:moveTo + 使用坐标
  • actions.press(startX, startY).waitAction(Duration.ofSeconds(2)).moveTo(endX, endY).release().perform();
  • 来源:http://www.automationtestinghub.com/appium-scroll-examples/
  • 错误:不推荐使用“按下”操作!

  • 方法:使用按下方法滑动+移动到
  • TouchAction().press(el0).moveTo(el1).release();
  • 来源:https://stackoverflow.com/questions/49004686/scroll-text-area-with-terms-and-conditions-on-hybrid-app-with-appium
  • 错误:“ undefined object 类型的方法 press(AndroidElement)”

  • 方法:touchAction 'tap' 使用坐标
  • TouchAction touchAction = new TouchAction(driver);
    touchAction.tap(PointOption.point(x, y)).perform();
  • 来源:https://discuss.appium.io/t/scrolling-to-element-in-android-app-using-java/17208
  • 错误:无;它部分有效:页面向下滚动但不够远!

  • 方法:UiScrollable > 指定父可滚动框架和子元素
  • MobileElement doeButton = driver.findElement(MobileBy.AndroidUIAutomator(
    "new UiScrollable(new UiSelector().text(\"Android scrollbar test\")).getChildByText("
    + "new UiSelector().className(\"android.widget.TextView\"), \"Doe\")"));
  • 来源:https://stackoverflow.com/a/51003840/9214050
  • 错误:“无法解析 UiSelector 参数:使用反射调用此方法时出现问题”

  • 方法:UiScrollable > 指定父滚动框架和'scrollIntoView'子元素
  • MobileElement sendEmailButton = driver.findElement(MobileBy.AndroidUIAutomator(
    "new UiScrollable(new UiSelector().resourceId(\"content\")).scrollIntoView("
    + "new UiSelector().resourceId(\"add-task-button\"))"));
    sendEmailButton.click();
  • 来源:https://stackoverflow.com/a/51003840/9214050
  • 错误:不滚动且没有错误

  • 方法:使用 CSS 样式将页面元素的“scrollable”属性从“false”更改为“true”
  • 来源:http://burnignorance.com/html-tips/making-a-smooth-scroll-view-for-android-ios-in-html/
  • 错误:无,但应用不会滚动到页面底部。

  • 方法:触摸 Action :“移动:滑动”、“移动:滚动”(http://appium.io/docs/en/writing-running-appium/touch-actions/)
  • JavascriptExecutor js = (JavascriptExecutor) driver;
    HashMap params = new HashMap();
    params.put("direction", "up");
    js.executeScript("mobile: swipe", params);
  • 来源:https://stackoverflow.com/questions/32387357/i-cant-make-swipe-gesture-work-for-me-in-appium-using-java#
  • 错误:“未知的移动命令“滚动”。仅支持 shell、startLogsBroadcast、stopLogsBroadcast 命令。”

  • 方法:HashMap + scrollObject.put
  • JavascriptExecutor js = (JavascriptExecutor) driver;
    HashMap scrollObject = new HashMap();
    scrollObject.put("direction", "down");
    js.executeScript("mobile: scroll", scrollObject);
  • 来源:http://appium.io/docs/en/writing-running-appium/touch-actions/
  • 错误:“未知的移动命令“滚动”。仅支持 shell、startLogsBroadcast、stopLogsBroadcast 命令。”

  • 方法:将应用程序的上下文从“ native ”调整为“webview”(因为它是 Cordova 应用程序)
  • appCapabilities.setCapability("autoWebview", "true");
  • 来源:https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
  • 错误:“线程“main”中的异常 org.openqa.selenium.WebDriverException:无法创建新 session ,因为使用 HttpClient、InputStream 和 long 的“createSession”未找到或无法访问。”
  • 错误:“org.openqa.selenium.WebDriverException:处理命令时发生未知的服务器端错误。原始错误:没有找到可以自动化Chrome'58.0.3029'的Chromedriver。见https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md 了解更多详情。(警告:服务器没有提供任何堆栈跟踪信息)”
  • 最佳答案

    作为上述选项的变体,这里是另一种实现方式 TouchAction结合 pressmoveTo对我有用的方法。这会导致向下滑动屏幕。您可能需要简单地将坐标调整为最适合您的客户端:

    new TouchAction(driver).press(PointOption.point(550, 640)).waitAction().moveTo(PointOption.point(550, 60)).release().perform();

    有关其他信息,您可以查看这些引用资料:
  • Appium站点:http://appium.io/docs/en/writing-running-appium/touch-actions/
  • 教程:https://www.youtube.com/watch?v=9rHe0r6YsVg
  • 关于java - 无法使用 Java 客户端使用 Appium 滚动 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51533591/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com