Selenium: chrome driver делает скриншот только видимой части страницы

Мне нужно сделать скриншот полной страницы с помощью драйвера chrome, но это делает его частично.

File screenshotFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);

скриншот выглядит как видимый прямоугольник с правильной информацией и большой черный уголок внизу.

4 ответов


Это известная ошибка:https://code.google.com/p/chromedriver/issues/detail?id=294 (только для драйвера Chrome, драйвер firefox работает нормально)


может стоит попробовать использовать эту библиотеку:

https://www.assertthat.com/posts/selenium_shutterbug_make_custom_screenshots_with_selenium_webdriver

чтобы сделать скриншот полной страницы:

Shutterbug.shootPage(driver, ScrollStrategy.BOTH_DIRECTIONS).save();

(он использует метод прокрутки и строчки)

источники на github https://github.com/assertthat/selenium-shutterbug

предоставляет возможность сделать полный скриншот страницы в Chrome и некоторых других расширенных особенности, протестированы на Windows и OS X.

успешно используется в моем текущем проекте.


вам нужно использовать

html2canvas нагрузки.js

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://github.com/niklasvh/html2canvas/releases/download/0.5.0-alpha1/html2canvas.js';
document.head.appendChild(script);

команда для загрузки полного скриншота страницы этой командой

html2canvas(document.body).then(function(canvas) {
    var a = document.createElement('a');
        // toDataURL defaults to png, so we need to request a jpeg, then convert for file download.
        a.href = canvas.toDataURL("image/jpeg").replace("image/jpeg", "image/octet-stream");
        a.download = 'somefilename.jpg';
        a.click();
})

вы можете вызвать этот скрипт с помощью javascriptexecutor и получить желаемые результаты, так как загрузка изображения будет запускаться автоматически в ваше местоположение загрузки по умолчанию, и вы можете изменить имя файла с помощью входного аргумента команды javascriptexecutor selenium.

надеюсь, что это помогает!


Я знаю, что это старая нить, но я хотел показать использование ITakesScreenshot Селена.

using OpenQA.Selenium;
using System.Drawing.Imaging;

((ITakesScreenshot)driver).GetScreenshot().SaveAsFile(@"YourImageNameHere.png", ImageFormat.Png);