## 🚀 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()`. 

* @see FileDetector
   * @see LocalFileDetector
   * @see UselessFileDetector
   */
  public void setFileDetector(FileDetector detector) {
    if (detector == null) {
      throw new WebDriverException("You may not set a file detector that is null");
    }
    fileDetector = detector;
  }
  public SessionId getSessionId() {
    return sessionId;
  }
  protected void setSessionId(String opaqueKey) {
    sessionId = new SessionId(opaqueKey);
  }
  protected void startSession(Capabilities capabilities) {
    Response response = execute(DriverCommand.NEW_SESSION(singleton(capabilities)));
    if (response == null) {
      throw new SessionNotCreatedException(
        "The underlying command executor returned a null response.");
    }
    Object responseValue = response.getValue();
    if (responseValue == null) {
      throw new SessionNotCreatedException(
        "The underlying command executor returned a response without payload: " +
        response.toString());
    }
    if (!(responseValue instanceof Map)) {
      throw new SessionNotCreatedException(