I'm trying to make Selenium wait for an element that is dynamically added to the DOM after page load. I tried this:

```
fluentWait.until(ExpectedConditions.presenceOfElement(By.id("elementId"));

```

In case it helps, here is `fluentWait`:

```
FluentWait fluentWait = new FluentWait<>(webDriver) {
    .withTimeout(30, TimeUnit.SECONDS)
    .pollingEvery(200, TimeUnit.MILLISECONDS);
}

```

But it throws a `NoSuchElementException`. It looks like `presenceOfElement` expects the element to be there, so this is flawed. This must be bread and butter to Selenium, and I don't want to reinvent the wheel... Is there an alternative, ideally without rolling my own `Predicate`?