### Question:
WebElementConditions extends AbstractObjectConditions<FluentWebElement> implements FluentConditions { @Override public StringConditions id() { return new StringConditionsImpl(object.id(), negation); } WebElementConditions(FluentWebElement element);  WebElementConditions(FluentWebElement element, boolean negation); @Override @Negation WebElementConditions not(); @Override boolean present(); @Override boolean clickable(); @Override boolean stale(); @Override boolean displayed(); @Override boolean enabled(); @Override boolean selected(); @Override StringConditions attribute(String name); @Override StringConditions id(); @Override StringConditions name(); @Override StringConditions tagName(); @Override StringConditions value(); @Override StringConditions text(); @Override StringConditions textContent(); @Override RectangleConditions rectangle(); @Override boolean className(String className);  }### Answer:
@Test public void hasId() { assertThat(conditions.id("value")).isFalse(); when(webElement.getAttribute("id")).thenReturn("value"); assertThat(conditions.id("value")).isTrue(); }