处理页面对象模型中的滚动

Handling scrolling in a page object model

使用页面对象模型模式时滚动到页面中的元素的最佳做法是什么?

如果重要的话,我的测试是 Appium 测试,它将 运行 在本机 iOS 和 Android 应用程序上进行。

假设我有这个页面:

public class LoginPage {

    private AndroidDriver<AndroidElement> driver;

    public LoginPage(AndroidDriver<AndroidElement> driver) {
        this.driver = driver;
        PageFactory.initElements(new AppiumFieldDecorator(driver), this);
    }

    @AndroidFindBy(className = "UIAKeyboard")
    private AndroidElement keyboard;

    @AndroidFindBy(id = "name")
    private AndroidElement nameElement;

    @AndroidFindBy(id = "password")
    private AndroidElement passwordElement;

    @AndroidFindBy(id = "login")
    private AndroidElement loginElement;

    public void scrollToLoginButton() {
        //......
    }
}

除了手动使用 FluentWait 之外,是否有一些内置的 way/best 练习向下滚动到登录按钮,每次都在 until 方法中激活 TouchAction我怎么找不到可点击的按钮?

   driver.findElement(MobileBy.AndroidUIAutomator(
            "new UiScrollable(new UiSelector().scrollable(true)).scrollTextIntoView(\"login\")"));

你可以使用 adroidUIAutomater class uiscrollable, see any method that'suites ui

https://developer.android.com/reference/androidx/test/uiautomator/UiScrollable

如果您想使用 selenium 中的操作 class,请使用:

import org.openqa.selenium.interactions.Actions;
new Actions(driver).clickAndHold(e2).moveByOffset(0, -500).perform();

注意: 你必须点击并按住屏幕底部的元素并向后滚动,这就是为什么 -500

或从最后一个元素移动到第一个元素:

    Actions action = new Actions(driver);
    action.clickAndHold(e2).moveToElement(e1);
    action.perform();