| 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() {} |
| } |