Selenium: драйвер chrome делает скриншот только видимой части страницы
Мне нужно сделать скриншот полной страницы с помощью драйвера 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);
Comments