// Path: src/main/java/ru/colibri/ui/core/settings/DriversSettings.java
// @Getter
// @Builder
// @ToString
// @EqualsAndHashCode
// public class DriversSettings {
//     private String appiumRemoteUrl;
//     private String deviceName;
//     private String filePath;
//     private int findingTimeOutInSeconds;
//     private int newCommandTimeoutInSeconds;
//     private int implicitlyWaitInSeconds;
//     private String storyTimeoutsInSeconds;
//     private List<String> stepsPackages;
//     private String storyPath;
//     private String storyToInclude;
//     private String storyToExclude;
//     private String pagesPath;
//     private String UDID;
//     private int wdaLocalPort;
//     private int systemPort;
//     private String platformVersion;
// }


import io.appium.java_client.AppiumDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Wait;
import org.openqa.selenium.support.ui.WebDriverWait;
import ru.colibri.ui.core.settings.DriversSettings;
package ru.colibri.ui.core.finder;


public abstract class AbsFinder<T extends AppiumDriver> implements IFinder {
    protected abstract T getDriver();

    protected abstract DriversSettings getDriversSettings();

    @Override
    public WebElement waitClickable(By by) {
// Path: src/main/java/ru/colibri/ui/core/settings/DriversSettings.java
// @Getter
// @Builder
// @ToString
// @EqualsAndHashCode
// public class DriversSettings {
//     private String appiumRemoteUrl;
//     private String deviceName;
//     private String filePath;
//     private int findingTimeOutInSeconds;
//     private int newCommandTimeoutInSeconds;
//     private int implicitlyWaitInSeconds;
//     private String storyTimeoutsInSeconds;
//     private List<String> stepsPackages;
//     private String storyPath;
//     private String storyToInclude;
//     private String storyToExclude;
//     private String pagesPath;
//     private String UDID;
//     private int wdaLocalPort;
//     private int systemPort;
//     private String platformVersion;
// }


// Path: src/main/java/ru/colibri/ui/core/finder/AbsFinder.java
import io.appium.java_client.AppiumDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Wait;
import org.openqa.selenium.support.ui.WebDriverWait;
import ru.colibri.ui.core.settings.DriversSettings;

package ru.colibri.ui.core.finder;


public abstract class AbsFinder<T extends AppiumDriver> implements IFinder {
    protected abstract T getDriver();

    protected abstract DriversSettings getDriversSettings();

    @Override
    public WebElement waitClickable(By by) {
        Wait<WebDriver> wait = new WebDriverWait(getDriver(), getDriversSettings().getFindingTimeOutInSeconds());