WebDriver Wait '.until(ExpectedConditions.elementToBeClickable' only works when i add Thread.sleep(500) to the Code?
<ol>
<li><p>I'm trying to click on a button which is visible on a page by using webdriver wait but webdriver is only able to click on the button once I add a <code>Thread.sleep</code> to the code. </p></li>
<li><p>I have also checked the button to see whether its visible (True) before I execute my code and it in turn <code>returns = true</code>. <br><br></p></li>
</ol>

<p>//Button Visiblity check:</p>

<pre><code>List&lt;WebElement&gt; signOutList = driver.findElements(.xpath(".//*[starts-with(@id,'fulfillment-time-type-section-')]/div[2]//button"));
Assert.assertTrue(signOutList.size() &gt; 0);
</code></pre>

<p>//The code below Doesn't click on the button</p>

<pre><code>By timeDropdownButton = By.xpath(".//*[starts-with(@id,'fulfillment-time-type-section-')]/div[2]//button");
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
              .until(ExpectedConditions.elementToBeClickable(timeDropdownButton));
myDynamicElement.click();
</code></pre>

<p>//The code below Does click on the button: </p>

<pre><code>Thread.sleep(500);
By timeDropdownButton = By.xpath(".//*[starts-with(@id,'fulfillment-time-type-section-')]/div[2]//button");
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
              .until(ExpectedConditions.elementToBeClickable(timeDropdownButton));
myDynamicElement.click();
</code></pre>

<p><br>
Please note I have also tried to click the button using JS code and WebDriver actions etc<br></p>

<p>I don't know why 'Wait Clickable' only works when I combine with 'Thread.sleep'?</p>

<p><a href="http://i.stack.imgur.com/yIBxn.png" rel="nofollow">The button I'm trying to click</a></p>