Как прокрутить страницу в php-webdriver?

Я пытаюсь получить скриншот с помощью php-драйвера. И кажется, что, несмотря на то, что он делает снимок всей веб-страницы, он просто делает снимок, который появляется на мониторе / экране (именно поэтому мы называем его скриншотом).

Итак, мой вопрос, как сделать снимок, который находится внизу страницы? Прокручиваем ли мы страницу до указанного элемента? или есть способ сфотографировать всю страницу?

Это мой код скриншота:

    $host = 'http://localhost:4444/wd/hub'; // this is the default
    $capabilities = DesiredCapabilities::firefox();
    $webdriver = RemoteWebDriver::create($host, $capabilities, 5000);
    function find_image($url) {
        //Screenshot
        $GLOBALS["webdriver"]->get($url);
        $element = $GLOBALS["webdriver"]->findElement(WebDriverBy::cssSelector('#law > p > img'));
        $element_width = $element->getSize()->getWidth();
        $element_height = $element->getSize()->getHeight();
        $element_x = $element->getLocation()->getX();
        $element_y = $element->getLocation()->getY();
        $screenshot = __DIR__ . "/number/" . count($GLOBALS["data"]) . ".png";
        $GLOBALS["webdriver"]->takeScreenshot($screenshot);
        $src = imagecreatefrompng($screenshot);
        $dest = imagecreatetruecolor($element_width, $element_height);

        imagecopy($dest, $src, 0, 0, $element_x, $element_y, $element_width, $element_height);
        imagepng($dest, $screenshot);
        return convert_image($screenshot);
    }

1 ответ

Решение

Как вы говорите, вы не можете сделать скриншот чего-либо большего, чем на текущем экране. Но вы можете прокрутить окно до конца страницы.

$this->webDriver->executeScript('window.scrollTo(0,document.body.scrollHeight);');
$this->webDriver->takeScreenshot("a.png");

Я использую переменную экземпляра для webDriver, используя GLOBALS не очень хороший способ его использования (ИМХО). Вы можете передать его как переменную или использовать его в качестве параметра для конструктора, если используете класс.

Другие вопросы по тегам