Implicit wait does not work in cases where elements is present on the page but is not get intractable and we click it.
That means the web element is present so implicit wait will be over but when we try to click it an exception will be thrown that element is not intractable yet.
We can either add a Thread.sleep class in that case so that we can wait for some time before we click it.But problem is how much time we have to wait in thread.sleep
But if element is still not intractable. So we use Explicit wait in that case.
WebDriverWait wait = new WebDriverWait(driver,10);
wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//*[@id='emailsubmit']")))); //We can use a number of expected conditions to wait for / visibility of element is just one of them.