如何在php-webdriver中滚动页面?

0 php selenium php-webdriver

我正在尝试使用php-driver获取一些截图.而且看起来尽管拍摄了整个网页的图片,它只是拍摄显示在显示器/屏幕上的图片(这就是我们称之为屏幕截图的原因).

所以我的问题是如何捕获位于页面底部的图片?我们将页面滚动到指定的元素吗?或者有办法拍摄整个页面的图片?

这是我的截图代码:

    $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);
    }
Run Code Online (Sandbox Code Playgroud)

Nig*_*Ren 9

正如您所说,您无法截取当前屏幕上的任何内容.但您可以将窗口滚动到页面底部.

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

我为webDriver使用了一个实例变量,使用GLOBALS它并不是一个特别好的使用方法(恕我直言).您可以将其作为变量传递,或者如果使用类,则将其用作构造函数的参数.