package com.codeborne.selenide.impl; import com.codeborne.selenide.SelenideElement; import org.openqa.selenium.WebElement; import java.lang.reflect.Proxy; public class WebElementWrapper extends WebElementSource { public static SelenideElement wrap(WebElement element) { return element instanceof SelenideElement ? (SelenideElement) element : (SelenideElement) Proxy.newProxyInstance( element.getClass().getClassLoader(), new Class<?>[]{SelenideElement.class}, new SelenideElementProxy(new WebElementWrapper(element))); } private final WebElement delegate; protected WebElementWrapper(WebElement delegate) { this.delegate = delegate; } @Override public WebElement getWebElement() { return delegate; } @Override public String getSearchCriteria() { return Describe.shortly(delegate); } @Override public String toString() { return Describe.describe(delegate); } }