Reduce the explicit waits duplicated code with a custom driver class
Any Selenium test automation code should synchronize with the page by waiting for an element to be present with a specific state (enabled, visible, hidden) before the element is used.
This is done with explicit waits and expected conditions (not with implicit waits) as follows:
WebDriverWait wait = new WebDriverWait(driver, 30);wait.until(ExpectedConditions.visibilityOfElementLocated(loc));
WebElement element = driver.findElement(loc);