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);