it-swarm.com.de

Wie kann ich mit Appium und Java nach unten scrollen, um auf das Element in Android zu klicken?

Ich möchte wissen, wie ich mit Appium und Java nach unten scrollen kann, um auf das Element in Android zu klicken.

Ich habe eine Liste von Elementen in "Android.support.v7.widget.RecyclerView". Da es mehr als 10 Elemente hat, müssen wir den Bildschirm streichen, um die folgenden Elemente zu sehen. Jedes Element hat die gleiche ID wie "com.osanda.exampleapp/textViewTitle". Aber ihre Texte unterscheiden sich wie "Apfel", "Orange", "Trauben" ......

Alles was ich brauche ist zu scrollen und das entsprechende Element mit seinem Text anzuklicken ("Apfel", "Orange", "Trauben" .....)

Ich habe viele Tutorials befolgt, konnte es aber nicht richtig machen. Ich habe es geschafft, den Bildschirm nach unten zu scrollen. Dies funktioniert jedoch nicht, wenn sich das Element in der mittleren Position des Bildlaufs befindet.

Wenn ich die Elementnamen aufgelistet habe, werden nur die sichtbaren Elemente angezeigt, nicht alle Elemente.

List<WebElement> elements = androidDriver.findElementByClassName("Android.support.v7.widget.RecyclerView").findElements(By.id("com.osanda.exampleapp:id/textViewTitle"));
        for(WebElement element : elements) {
            System.out.println(element.getText());
        }

Danke dir.

3
Osanda Deshan

Das hat für mich funktioniert.

public void scrollAndClick(String visibleText) {
     androidDriver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textContains(\""+visibleText+"\").instance(0))").click();
        }
    }
5
Osanda Deshan

Bitte benutzen Sie den untenstehenden Code. Es wird so lange gescrollt, bis der Text sichtbar ist. 

   String uiSelector = "new UiSelector().textMatches(\"" + text
                        + "\")";

   String command = "new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView("
                        + uiSelector + ");";

    driver.findElementByAndroidUIAutomator(command);

Jetzt können Sie die Klickaktion ausführen.

2
bsk
public AndroidElement ScrollToElement(String by, String using) {
    AndroidElement element = null;
    int numberOfTimes = 10;
    Dimension size = driver.manage().window().getSize();
    int anchor = (int) (size.width / 2);
    // Swipe up to scroll down
    int startPoint = (int) (size.height - 10);
    int endPoint = 10;

    for (int i = 0; i < numberOfTimes; i++) {
        try {
            new TouchAction(driver)
                .longPress(point(anchor, startPoint))
                .moveTo(point(anchor, endPoint))
                .release()
                .perform();
            element = (AndroidElement) driver.findElement(by, using);
            i = numberOfTimes;
        } catch (NoSuchElementException ex) {
            System.out.println(String.format("Element not available. Scrolling (%s) times...", i + 1));
        }
    }
    return element;
}

Verwenden Sie in Ihrem Test wie folgt: Beispiel: String usingWebView = “//Android.widget.TextView[@text=‘Spinner’]”; String by = “xpath”; MobileActions mbAct = new MobileActions(driver); //This is just a class which has above function code. AndroidElement webViewElement = mbAct.ScrollToElement(by, usingWebView, 250); webViewElement.click();

0
ShiyamTJ

findElementByAndroidUIAutomator--AndroidUiAutomater ist in der neuesten Version veraltet.

Wo als Jetzt funktioniert der Code, der funktioniert

MobileElement element = driver.findElement(MobileBy.AndroidUIAutomator(
        "new UiScrollable(new UiSelector().resourceId(\"com.Android.vending:id/tab_recycler_view\")).getChildByText("
        + "new UiSelector().className(\"Android.widget.TextView\"), \"Games We Are Playing\")"));

//Perform the action on the element
element.click();
0
lokesh sharma