如何在 php-webdriver 中滚动页面?
How can I scroll page in php-webdriver?
我正在尝试使用 php-驱动程序获取一些屏幕截图。看起来尽管拍摄了整个网页的图片,它只是拍摄了出现在 monitor/screen 上的图片(这就是我们称之为屏幕截图的原因)。
所以我的问题是如何捕获位于页面底部的图片?我们是否将页面滚动到指定的元素?或者有什么方法可以拍下整个页面?
这是我的截图代码:
$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);
}
如您所说,除了当前屏幕上的内容外,您无法截取任何内容。但您可以将 window 滚动到页面底部。
$this->webDriver->executeScript('window.scrollTo(0,document.body.scrollHeight);');
$this->webDriver->takeScreenshot("a.png");
我为 webDriver 使用了一个实例变量,使用 GLOBALS
并不是一个特别好的使用方式(恕我直言)。
您可以将其作为变量传递,或者如果使用 class.
则将其用作构造函数的参数
我正在尝试使用 php-驱动程序获取一些屏幕截图。看起来尽管拍摄了整个网页的图片,它只是拍摄了出现在 monitor/screen 上的图片(这就是我们称之为屏幕截图的原因)。
所以我的问题是如何捕获位于页面底部的图片?我们是否将页面滚动到指定的元素?或者有什么方法可以拍下整个页面?
这是我的截图代码:
$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);
}
如您所说,除了当前屏幕上的内容外,您无法截取任何内容。但您可以将 window 滚动到页面底部。
$this->webDriver->executeScript('window.scrollTo(0,document.body.scrollHeight);');
$this->webDriver->takeScreenshot("a.png");
我为 webDriver 使用了一个实例变量,使用 GLOBALS
并不是一个特别好的使用方式(恕我直言)。
您可以将其作为变量传递,或者如果使用 class.