¿Cuándo usar la espera explícita frente a la espera implícita en Selenium Webdriver?

Estoy usando:

<code>driver.manage().timeouts().implicitlyWait(180, TimeUnit.SECONDS);
</code>

Pero sigue fallando continuamente por el siguiente elemento

<code>    driver.findElement(By.id("name")).clear();
    driver.findElement(By.id("name")).sendKeys("Create_title_01");
</code>

He añadido el código de espera:

<code>for (int second = 0;; second++) {
        if (second >= 120) fail("timeout");
        try { if (isElementPresent(By.id("name"))) break; } catch (Exception e) {}
        Thread.sleep(1000);
    }
</code>

¿No debería la espera implícita ocuparse de esperar hasta que se encuentre un elemento? También sería mejor si utilizara la espera explícita en lugar del código que he agregado que tieneThread.sleep()?

Respuestas a la pregunta(6)

Su respuesta a la pregunta