即使找不到元素或在appium中等待android,如何继续

时间:2016-01-18 08:42:48

标签: android testing automation appium

我正在使用 Appium(java)来自动化 android 应用。
假设我尝试找到一个按钮(通过 class / id /可访问性)并且我没有得到 - 他们要么服务器继续搜索特定的id或抛出异常。
使用try- catch是一个选项,但如果它仍然是什么即使在几秒钟之后搜索元素?
请建议正确的方法继续进行

4 个答案:

答案 0 :(得分:2)

使用try-catch逻辑创建一个检查元素是否可用的方法,例如

String elementID="something";
WebDriverWait wait = new WebDriverWait(driver, waitTime);
    try{
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(elementID)));
    }catch (Exception e) {
        log("INFO - "+elementID+" Element is Not Present");
        return false;
    }
return true;

如果method返回true,则执行操作或者断言。

答案 1 :(得分:2)

这是一个简单的解决方案:

 public static Boolean elementExists(By selector) {
    List<MobileElement> elementlist = driver.findElements(selector);
    return (!elementlist.isEmpty());
}

重要的部分是使用driver.findElement s ,它将返回找到的元素列表。然后只需检查列表是否为空。

答案 2 :(得分:1)

试试这个。我将它包装为函数 isElementPresent(),这是一个布尔值,如果元素存在则返回true。

public boolean isElementPresent(String identifier) throws IOException{

    MobileElement elementId = (MobileElement)driver.findElementById(identifier);

    Application_Log.info("Element found :- " , elementId);

    int totalSize = elementId.size();
    System.out.println(totalSize);

    if (totalSize!=0){

        System.out.println("Element found  : "+ elementId );

    }else{
        Application_Log.error("Element not found :- " + elementId);
        Assert.fail("Element not found :- " + elementId);
    }

    return false;
}

答案 3 :(得分:1)

WebElement feedsCatItems = (new WebDriverWait(driver, 10)) .until(ExpectedConditions.presenceOfElementLocated(By.className("android.view.View")));

你可以用它。这等待特定元素然后移动。在这里,我等待视图,它等待10秒钟。 这很容易。