All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.applitools.eyes.selenium.positioning.PositionProviderFactory Maven / Gradle / Ivy

package com.applitools.eyes.selenium.positioning;

import com.applitools.eyes.BrowserNames;
import com.applitools.eyes.IEyesJsExecutor;
import com.applitools.eyes.Logger;
import com.applitools.eyes.UserAgent;
import com.applitools.eyes.positioning.PositionProvider;
import com.applitools.eyes.selenium.StitchMode;
import com.applitools.utils.ArgumentGuard;
import org.openqa.selenium.WebElement;

import java.util.HashMap;
import java.util.Map;

public class PositionProviderFactory {

    private static Map positionProviders = new HashMap<>();

    public static PositionProvider getPositionProvider(Logger logger, StitchMode stitchMode, IEyesJsExecutor executor, WebElement scrollRootElement) {
        PositionProvider positionProvider = positionProviders.get(scrollRootElement);
        if (positionProvider != null) {
            return positionProvider;
        }
        positionProvider = getPositionProvider(logger, stitchMode, executor, scrollRootElement, null);
        positionProviders.put(scrollRootElement, positionProvider);
        return positionProvider;
    }

    public static PositionProvider getPositionProvider(Logger logger, StitchMode stitchMode, IEyesJsExecutor executor, WebElement scrollRootElement, UserAgent userAgent) {
        ArgumentGuard.notNull(logger, "logger");
        ArgumentGuard.notNull(executor, "executor");

        switch (stitchMode) {
            case CSS:
                return new CssTranslatePositionProvider(logger, executor, scrollRootElement);
            case SCROLL:
                if (userAgent != null && userAgent.getBrowser().equalsIgnoreCase(BrowserNames.EDGE))
                    return new EdgeBrowserScrollPositionProvider(logger, executor, scrollRootElement);
                //else
                return new SeleniumScrollPositionProvider(logger, executor, scrollRootElement);
            default:
                return null;
        }
    }

    public static PositionProvider tryGetPositionProviderForElement(WebElement element) {
        return positionProviders.get(element);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy