/**
  * @param \PHPUnit_Extensions_Selenium2TestCase_Element $clickElement
  * @param string                                        $waitForSelector
  * @param boolean                                       $displayCheck
  * @return \PHPUnit_Extensions_Selenium2TestCase_Element|null
  */
 protected function clickAndWait(\PHPUnit_Extensions_Selenium2TestCase_Element $clickElement, $waitForSelector, $displayCheck = false)
 {
     $this->execute(['script' => 'window.scrollTo(' . $clickElement->location()['x'] . ', ' . $clickElement->location()['y'] . ');', 'args' => []]);
     $clickElement->click();
     try {
         $element = $this->waitUntil(function (BaseSeleniumTestCase $testCase) use($waitForSelector, $displayCheck) {
             try {
                 $element = $testCase->byCssSelector($waitForSelector);
                 if (!$displayCheck || $element->displayed()) {
                     return $element;
                 }
             } catch (\PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {
                 // nothing to do
             }
             return null;
         }, $this->timeout);
     } catch (\PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {
         $element = null;
     }
     return $element;
 }