Как создать лучший скриншот во время автоматизации селена в JAVA? - PullRequest
0 голосов
/ 03 июля 2018

Я создаю автоматизированные тестовые случаи, используя селен 3 и testng. Все выглядит хорошо, кроме скриншотов, которые генерируются. Вот мой кусок кода для создания скриншотов PNG-файлов:

    file = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
    FileUtils.copyFile(file, new File(pngfile));

, что является довольно стандартным способом сделать это, но качество созданного файла PNG не очень хорошее.

Как видно из следующего файла PNG. На рисунке это значение адреса электронной почты (".... @ yahoo.com"), которое должно находиться в верхнем правом углу веб-страницы и быть таким же, как и другие элементы панели навигации с левой стороны. Но в созданном PNG-файле этот элемент был перенесен на более низкий уровень, а это не то, что я ищу. Есть идеи ? Спасибо за помощь !

enter image description here

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Пожалуйста, попробуйте это,

public void calltakeScreenShot(String SSName) throws Exception
{
    File screen = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);      
    BufferedImage img = ImageIO.read(screen);
    File filetest = Paths.get(".").toAbsolutePath().normalize().toFile();
    ImageIO.write(img, "png", new File(filetest + "\\Screenshots\\" + SSName + ".png"));
}

Дополнительно Здесь вам просто нужно предварительно создать папку Screenshots в вашем каталоге Project. Он сохранит его, получив абсолютный путь к вашему проекту. Также вы можете управлять именем скриншота, передавая аргумент.

0 голосов
/ 12 июля 2018

После нескольких дней исследований, вот мое последнее резюме.

A). Если я выполнял сценарии, то это было бы не в режиме «без головы». Когда будет выполнен тестовый тест на селен, я увижу, что открывается новый сеанс браузера, и доберусь до этого URL, нажимаю несколько кнопок и т. Д., ... пока не закончится выполнение. В этом исполнении страница со скриншотом будет сохранена в хорошем качестве.

В). Для того же сценария тестирования селена, если я включу один дополнительный параметр ChromeOptions, который является «--headless», я не увижу ни одного браузера, который будет запущен во время выполнения. И как только выполнение будет завершено, я получу скриншот с такими сжатыми веб-элементами.

Комментарии?

0 голосов
/ 03 июля 2018

Убедитесь, что ваше окно имеет правильный размер при открытии браузера. Вы можете сделать это с помощью визуального осмотра или с помощью метода Selenium getSize. Я предполагаю, что вы используете Java, но здесь это также и на Python.

Тогда, если окно имеет неправильный размер, чтобы гарантировать, что CSS вашей веб-страницы не сломается, используйте setSize. Здесь также является этим методом в Python.

После этого ваш скриншот должен выглядеть так, как выглядит окно.

...