【问题标题】:Scroll down with Java using Selenium Web Driver (Appium)使用 Selenium Web Driver (Appium) 使用 Java 向下滚动
【发布时间】:2018-02-02 02:00:37
【问题描述】:

我正在尝试使用 Java 在 APK 页面中向下滚动。我正在使用 Appium 和 Selenium。

我试过了:

JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)", "");

还有driver.scrollToExact(); 命令,但“WebDriver”不支持它们。

我该怎么做?

【问题讨论】:

  • @JeffC 我查看了所有关于此的主题,但没有任何解决方案。
  • 请参阅:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask

标签: java android selenium scroll appium


【解决方案1】:

如果您想使用 Appium 在移动应用程序上滚动页面,您可以使用以下代码使用 Appium 驱动程序

语法:driver.swipe(startX, startY, endX, endY, duration);

例子:

driver.swipe(200, 900, 200, 100, 2000);

如果您想在浏览器中滚动网页,您可以使用传统的滚动方式,使用 javascript。

【讨论】:

  • 但我正在使用 WebDriver
  • 如果您想在手机屏幕上滚动,那么您只需要使用手机驱动程序。
【解决方案2】:

你应该试试这个:

JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("scroll(0, 250)");

【讨论】:

  • 不幸的是,再次出现此错误:尚未实施。请帮助我们:appium.io/get-involved.html(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:6 毫秒
【解决方案3】:

你可以使用滑动方法

driver.swipe(startx, starty, endX, endy, 3000);

我找到了一篇文章可以帮助你完成任务:-

http://www.software-testing-tutorials-automation.com/2015/11/appium-how-to-swipe-vertical-and.html

希望对你有帮助:)

【讨论】:

  • 谢谢我看到了,但它是为 Android 驱动程序
【解决方案4】:

这是全方位的滑动操作:

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);
            break;

        case LEFT:
            startY = (int) (size.height /2);
            startX = (int) (size.width * 0.05);
            endX = (int) (size.width * 0.90);
            break;

        case UP:
            endY= (int) (size.height * 0.70);
            startY  = (int) (size.height * 0.30);
            startX = (size.width / 2);
            break;


        case DOWN:
            startY = (int) (size.height * 0.70);
            endY = (int) (size.height * 0.30);
            startX = (size.width / 2);

            break;

    }

    new TouchAction(driver)
            .press(startX, startY)
            .waitAction(Duration.ofMillis(duration))
            .moveTo(endX, startY)
            .release()
            .perform();

}

这段代码有一些不推荐使用的部分,但尝试了所有其他方法,没有这段代码那么有效。

它在几个项目中帮助了我。

【讨论】:

    猜你喜欢
    • 2014-10-11
    • 2013-04-14
    • 2019-03-29
    • 1970-01-01
    • 2017-09-03
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多