コード例 #1
1
 /**
  * @param string $prefix
  * @param RemoteWebElement $element
  *
  * @return string
  * @throws RuntimeException
  */
 protected function takeScreenshot($prefix, RemoteWebElement $element = null)
 {
     $screenshotPath = $this->getScreenshotPath($prefix);
     $this->webDriver->takeScreenshot($screenshotPath);
     if (!file_exists($screenshotPath)) {
         throw new RuntimeException('Could not save screenshot');
     }
     if ($element === null) {
         return $screenshotPath;
     }
     $elementWidth = $element->getSize()->getWidth();
     $elementHeight = $element->getSize()->getHeight();
     $elementSrcX = $element->getLocation()->getX();
     $elementSrcY = $element->getLocation()->getY();
     // Create image instances
     $src = imagecreatefrompng($screenshotPath);
     $dest = imagecreatetruecolor($elementWidth, $elementHeight);
     // Copy
     imagecopy($dest, $src, 0, 0, $elementSrcX, $elementSrcY, $elementWidth, $elementHeight);
     imagepng($dest, $screenshotPath);
     if (!file_exists($screenshotPath)) {
         throw new RuntimeException('Could not save screenshot');
     }
     return $screenshotPath;
 }
コード例 #2
0
 /**
  * Create screenshot for an element
  *
  * @param string $referenceImageName
  * @param RemoteWebElement $element
  * @return \Imagick
  */
 protected function _createScreenshot($referenceImageName, RemoteWebElement $element)
 {
     // Try scrolling the element into the view port
     $element->getLocationOnScreenOnceScrolledIntoView();
     $tempImagePath = $this->moduleFileSystemUtil->getTempImagePath($referenceImageName);
     $this->webDriver->webDriver->takeScreenshot($tempImagePath);
     $image = new \Imagick($tempImagePath);
     $image->cropImage($element->getSize()->getWidth(), $element->getSize()->getHeight(), $element->getCoordinates()->onPage()->getX(), $element->getCoordinates()->onPage()->getY());
     $image->setImageFormat('png');
     $image->writeImage($tempImagePath);
     return $image;
 }