package io.appium.droiddriver.helpers; import io.appium.droiddriver.DroidDriver; import io.appium.droiddriver.Poller.PollingListener; import io.appium.droiddriver.exceptions.ElementNotFoundException; import io.appium.droiddriver.finders.Finder; /** * Static utility methods to create commonly used PollingListeners. */ public class PollingListeners { /** * Tries to find {@code watchFinder}, and clicks it if found. * * @param driver a DroidDriver instance * @param watchFinder Identifies the UI component to watch * @return whether {@code watchFinder} is found */ public static boolean tryFindAndClick(DroidDriver driver, Finder watchFinder) { try { driver.find(watchFinder).click(); return true; } catch (ElementNotFoundException enfe) { return false; } } /** * Returns a new {@code PollingListener} that will look for * {@code watchFinder}, then click {@code dismissFinder} to dismiss it. * <p> * Typically a {@code PollingListener} is used to dismiss "random" dialogs. If * you know the certain situation when a dialog is displayed, you should deal * with the dialog in the specific situation instead of using a * {@code PollingListener} because it is checked in all polling events, which * occur frequently. * </p> * * @param watchFinder Identifies the UI component, for example an AlertDialog * @param dismissFinder Identifies the UiElement to click on that will dismiss * the UI component */ public static PollingListener newDismissListener(final Finder watchFinder, final Finder dismissFinder) { return new PollingListener() { @Override public void onPolling(DroidDriver driver, Finder finder) { if (driver.has(watchFinder)) { driver.find(dismissFinder).click(); } } }; } private PollingListeners() {} }