查看ios和android上下滚动直到找到元素,然后单击

问题描述 投票:0回答:3

我尝试了很多关于appium、java中ios和android滚动的博客和讨论。但看起来大多数方法已被弃用或不起作用。请帮忙。 我正在使用 appium 1.15.1、java、selenium。

寻求快速帮助。

我正在尝试执行以下代码,但它滚动了两次,甚至没有单击。

嗨,

我在 Mac 上使用真实设备。 我正在使用 Appium 1.15.1、Selenium、Java 和 POM。 我为 iOS 向下滑动编写了以下代码。

嗨,

public void chkMenuOptioniOS1(String sName)
    {   
/* This is actual path which got from inspector
//XCUIElementTypeStaticText[@name="Account Information"]
*/
        String targetCell = "//XCUIElementTypeStaticText[contains(@name,'" + sName + "')]";
        MobileElement cellWithText = driver.findElement(By.xpath(targetCell));
        HashMap<String, String> scrollObject = new HashMap<String, String>();
        scrollObject.put("element", ((RemoteWebElement)cellWithText).getId());
        scrollObject.put("direction", "down");
        scrollObject.put("predicateString", "value == '" + sName + "'");
        scrollObject.put("toVisible", "true");
        driver.executeScript("mobile:scroll", scrollObject);
        try {
            System.out.println("In Try Block "+cellWithText.getText());
            Thread.sleep(10);
            cellWithText.click();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
  1. 滚动两次
  2. 并且没有点击,

附加 DOM 对象屏幕截图。

请帮助我

java appium appium-android appium-ios
3个回答
1
投票

这些是满足您 iOS 和 Android 需求的方法:

private JavascriptExecutor js;
private HashMap<String, String> scrollObject = new HashMap<>();

void iosScrollToAnElement(IOSElement el) {
        scrollObject.put("direction", "down");
        scrollObject.put("element", el.getId());
        js.executeScript("mobile: swipe", scrollObject);
}

void androidScrollToAnElementByText(String text) {
        try {
            ((AndroidDriver)driver).findElementByAndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text(\"" + text + "\").instance(0))");
        } catch (Exception e) {
            throw new NoSuchElementException("No element" + e);
        }
    }

在此之后,您需要

click()
您正在寻找的特定元素。 (只有滚动的方法)


0
投票

enter image description here

请尝试这个


0
投票

我附加了要滚动并单击的元素的 xpath,但在执行期间滚动时,它正在复制文本,因此脚本无法识别要单击的元素。我附上了下面的代码,请就如何修复它提出任何反馈。

public void scroll(IOSElement el) {
    JavascriptExecutor js = (JavascriptExecutor) Driver;
    HashMap<String, String> scrollObject = new HashMap <String, String();
    scrollObject.put("direction", "up");
    scrollObject.put("element", "(//XCUIElementTypeLink[@name=\"Privacy Issue Form. \"])[1]");
    js.executeScript("mobile: scroll", scrollObject);

}

© www.soinside.com 2019 - 2024. All rights reserved.