/** * @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; }