滑动到appium ios中dom中不存在的元素

滑动到appium ios中dom中不存在的元素,appium,Appium,我有一个应用程序,其中一个特定的父级有n个元素,比如说10个元素(平铺),只有5个元素出现在dom中,并且在当前屏幕中可见。在向上滑动时,下一个5将出现在dom/屏幕中。如何滑动到特定元素(如第7个元素) 由于元素不在dom中,我无法按id/名称获取和查找元素,因此在元素可见之前,我无法使用滑动。此外,这些元素的数量根据后端系统的配置而有所不同,因此我无法进行固定次数的刷卡。此外,由于我不知道父元素中的最后一个元素,如果特定元素不在应用程序中(由于bug),我就有可能陷入无限循环 请提供有关如何

我有一个应用程序,其中一个特定的父级有n个元素,比如说10个元素(平铺),只有5个元素出现在dom中,并且在当前屏幕中可见。在向上滑动时,下一个5将出现在dom/屏幕中。如何滑动到特定元素(如第7个元素)

由于元素不在dom中,我无法按id/名称获取和查找元素,因此在元素可见之前,我无法使用滑动。此外,这些元素的数量根据后端系统的配置而有所不同,因此我无法进行固定次数的刷卡。此外,由于我不知道父元素中的最后一个元素,如果特定元素不在应用程序中(由于bug),我就有可能陷入无限循环


请提供有关如何解决此问题的帮助。

您可以使用以下方法向下滚动到所需的元素。为了避免无限循环,可以保持while循环的计数

public void scrollDown()
{
    TouchAction action = new TouchAction((AppiumDriver)driver);
    action.press(new PointOption().point(300, 701)).waitAction(newWaitOptions().waitOptions(Duration.ofSeconds(2))).moveTo(new PointOption().point(300, 441)).release();
    action.perform();
}


public void scrollTillElement(By element)
{
    int countofLoop = 0;
    List<WebElement> elements = driver.findElements(element);

    while (elements.size()==0)
    {
        countofLoop++;
        scrollDown();
        elements = driver.findElements(element);
        if(countofLoop==20)
         {
            break;
         }
    }
}
public void scrollDown()
{
TouchAction动作=新的TouchAction((AppiumDriver)驱动程序);
动作。按(new PointOption().point(300701)).waitAction(newWaitOptions().waitOptions(持续时间秒(2))).moveTo(new PointOption().point(300441)).release();
action.perform();
}
公共元素(按元素)
{
int countoflop=0;
列表元素=driver.findElements(元素);
while(elements.size()==0)
{
countoflop++;
向下滚动();
元素=驱动程序。findElements(元素);
if(countofLoop==20)
{
打破
}
}
}