这是代码

for (loopVal = 1; loopVal < endVal; loopVal++) {

    MobileElement followButton = (MobileElement) driver.findElement(By.xpath("//android.widget.ListView[@index='0']//android.widget.FrameLayout[@index='"+loopVal+"']//android.widget.LinearLayout[@index='0']//android.widget.FrameLayout[@index='2']//android.widget.TextView[@index='0']"));

    String followOrNot = followButton.getText();
    System.out.println(followOrNot + " " + loopVal);
}


如果找不到MobileElement followButton,则它将引发错误,并且其余代码将不执行

我需要在程序在followButton上运行.getText()之前检查followButton是否存在

如果我尝试用try-catch块包围followButton

try {

    MobileElement followButton = (MobileElement) driver.findElement(By.xpath("//android.widget.ListView[@index='0']//android.widget.FrameLayout[@index='"+loopVal+"']//android.widget.LinearLayout[@index='0']//android.widget.FrameLayout[@index='2']//android.widget.TextView[@index='0']"));

    } catch(org.openqa.selenium.NoSuchElementException e) {

        //handle error

    }


然后我在String followOrNot.getText()上看到一个错误,说


followButton无法解析


如果我尝试在followButton上使用.isEmpty

        MobileElement followButton = (MobileElement) driver.findElement(By.xpath("//android.widget.ListView[@index='0']//android.widget.FrameLayout[@index='"+loopVal+"']//android.widget.LinearLayout[@index='0']//android.widget.FrameLayout[@index='2']//android.widget.TextView[@index='0']"));

    if(driver.findElements(followButton).isEmpty()) {

        //handle error
    }


然后我在findElements上看到一个错误,说


AppiumDriver类型的方法findElements(By)不适用于参数(MobileElement)


如果我尝试在.isDisplayed上使用followButton

        MobileElement followButton = (MobileElement) driver.findElement(By.xpath("//android.widget.ListView[@index='0']//android.widget.FrameLayout[@index='"+loopVal+"']//android.widget.LinearLayout[@index='0']//android.widget.FrameLayout[@index='2']//android.widget.TextView[@index='0']"));

    if(followButton.isDisplayed()) {

        //do nothing

    } else {

        //handle error

    }


那么现在的问题是,如果未找到followButton,则将引发错误,认为其余代码无效

我试图在followButton上执行任何其他操作之前先验证followButton是否存在

我问了一个与此问题类似的问题,但没有得到有帮助的答案,我唯一的选择是再次询问。

有人可以帮忙吗?

最佳答案

您可以通过先获取该元素的列表,然后检查列表大小来检查页面上是否存在该元素。如果大小大于零,则该元素存在,否则不存在。
您可以这样做:

if(driver.findElements(By.xpath("//android.widget.ListView[@index='0']//android.widget.FrameLayout[@index='"+loopVal+"']//android.widget.LinearLayout[@index='0']//android.widget.FrameLayout[@index='2']//android.widget.TextView[@index='0']")).size()>0){
// Element is present
// Do the operations here
}
else{
// Element is not present
}

08-26 06:41