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