Minor dependency updates
[yaffs-website] / vendor / jcalderonzumba / mink-phantomjs-driver / src / PageContentTrait.php
1 <?php
2
3 namespace Zumba\Mink\Driver;
4
5 use Behat\Mink\Exception\DriverException;
6
7 /**
8  * Class PageContentTrait
9  * @package Zumba\Mink\Driver
10  */
11 trait PageContentTrait {
12
13   /**
14    * @return string
15    */
16   public function getContent() {
17     return $this->browser->getBody();
18   }
19
20   /**
21    * Given xpath, will try to get ALL the text, visible and not visible from such xpath
22    * @param string $xpath
23    * @return string
24    * @throws DriverException
25    */
26   public function getText($xpath) {
27     $elements = $this->findElement($xpath, 1);
28     //allText works only with ONE element so it will be the first one and also returns new lines that we will remove
29     $text = $this->browser->allText($elements["page_id"], $elements["ids"][0]);
30     $text = trim(str_replace(array("\r", "\r\n", "\n"), ' ', $text));
31     $text = preg_replace('/ {2,}/', ' ', $text);
32     return $text;
33   }
34
35   /**
36    * Returns the inner html of a given xpath
37    * @param string $xpath
38    * @return string
39    * @throws DriverException
40    */
41   public function getHtml($xpath) {
42     $elements = $this->findElement($xpath, 1);
43     //allText works only with ONE element so it will be the first one
44     return $this->browser->allHtml($elements["page_id"], $elements["ids"][0], "inner");
45   }
46
47   /**
48    * Gets the outer html of a given xpath
49    * @param string $xpath
50    * @return string
51    * @throws DriverException
52    */
53   public function getOuterHtml($xpath) {
54     $elements = $this->findElement($xpath, 1);
55     //allText works only with ONE element so it will be the first one
56     return $this->browser->allHtml($elements["page_id"], $elements["ids"][0], "outer");
57   }
58
59   /**
60    * Returns the binary representation of the current page we are in
61    * @throws DriverException
62    * @return string
63    */
64   public function getScreenshot() {
65     $options = array("full" => true, "selector" => null);
66     $b64ScreenShot = $this->browser->renderBase64("JPEG", $options);
67     if (($binaryScreenShot = base64_decode($b64ScreenShot, true)) === false) {
68       throw new DriverException("There was a problem while doing the screenshot of the current page");
69     }
70     return $binaryScreenShot;
71   }
72 }