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



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



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


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

646   4  

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

    Ничего не найдено.