## 🚀 Feature Proposal

I suggest
1. either to add method `getId()` to interface `WebElement`, or
2. to create interface like `HasId` or `HasIdentity` and make `RemoteWebElement` implement it. 

## Motivation

People often cast `WebElement` to `RemoteWebElement` just to call method `getId()`. 
De-facto all implementations of `WebElement` have method `getId()`. 
For me, it's a problem because `RemoteWebElement` is a class, not interface, and therefore I cannot create a proxy object for it in Selenide. I need some interface with method `getId()`. 

}
    }
    try {
      List<WebElement> elements = Mechanism.CONTEXT.findElements(parent, context, locator);
      remotableBys.put(locator.getClass(), Mechanism.CONTEXT);
      elements.forEach(e -> massage(parent, context, e, locator));
      return elements;
    } catch (NoSuchElementException e) {
      remotableBys.put(locator.getClass(), Mechanism.CONTEXT);
      throw e;
    }
  }
  private WebElement massage(RemoteWebDriver parent, SearchContext context, WebElement element, By locator) {
    if (!(element instanceof RemoteWebElement)) {
      return element;
    }
    RemoteWebElement remoteElement = (RemoteWebElement) element;
    if (locator instanceof By.Remotable) {
      By.Remotable.Parameters params = ((By.Remotable) locator).getRemoteParameters();
      remoteElement.setFoundBy(context, params.using(), String.valueOf(params.value()));
    }
    remoteElement.setFileDetector(parent.getFileDetector());
    remoteElement.setParent(parent);
    return remoteElement;
  }
  /**
   * @deprecated Rely on using {@link By.Remotable} instead
   */
  @Deprecated
  protected WebElement findElement(String by, String using) {