Перейти к содержимому

Фотография

Selenium 2.0 - как снять скриншот


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 testbom

testbom

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 30 июля 2012 - 11:42

Добрый день! Совсем недавно начал миграцию с Selenium 1 на Selenium 2,а именно WebDriver.
Столкнулся с множеством проблем, но пока меня интересует сохранение скриншотов.
Был бы очень презнателен если бы кто-нибуть дал пример кода как это делать в WB.(Пишу тесты на JAWA)

НА одном из форумов нашел строку:

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

Врезал в код - ни на что не ругается, а что дальше делать не пойму.


Всем за ранее спасибо
  • 1

#2 man4ik21

man4ik21

    Новый участник

  • Members
  • Pip
  • 9 сообщений
  • ФИО:иван Перломутров Апапович

Отправлено 30 июля 2012 - 11:50

WebDriver driver = new FirefoxDriver();

driver.get("http://www.google.com/");

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

// Now you can do whatever you need to do with it, for example copy somewhere

FileUtils.copyFile(scrFile, new File("c:\\tmp\\screenshot.png"));

  • 3

#3 testbom

testbom

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 30 июля 2012 - 11:59

Спасибо большое!!
  • 0

#4 O'Leen

O'Leen

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • Город:Киев

Отправлено 04 марта 2013 - 11:03

Спасибо большое!!

Присоединяюсь.
  • 0

#5 owasp

owasp

    Активный участник

  • Members
  • PipPip
  • 87 сообщений

Отправлено 04 марта 2013 - 16:44

В какой-то момент стало нехватать возможности получить снимок всех экранов (а не только содержимого текущего окна браузера).
Тут мне помог код из проекта, который нашел на хабре:
см. https://bitbucket.or...rGn/screenpaste
ScreenPaste / ScreenPaste / Screenshot.cs

Адаптировал этот код в свой проект (встроил cнятие снимка текущей страницы и снимков всех экранов при каждом возникновении исключения).
В коде ниже, метод TakeScreenShot работает также как написано в комментариях выше.
А метод TakeAllScreen работает на основе кода из проекта, указанного по ссылке на bitbucket:

public class SeleniumHelperException : Exception
    {
        protected static List<string> TakeScreenShots()
        {
            List<string> listPathes = new List<string>();
            if (SeleniumRunner.Host != null)
            {
                ICamera camera = SeleniumRunner.Host.Camera;
                listPathes = camera.TakeAllScreen();
            }
            return listPathes;
        }

        protected static string TakeScreenShotCurrentPage()
        {
            if (SeleniumRunner.Host != null)
            {
                ICamera camera = SeleniumRunner.Host.Camera;
                return camera.TakeScreenshot();
            }
            else
            {
                return null;
            }
        }

        protected static string AddScreenShotPathToMessage(string message = null)
        {
            string messageWithScreenShot = message;
            string screenShotPath = TakeScreenShotCurrentPage();
            if (screenShotPath != null)
            {
                if (message != null)
                {
                    messageWithScreenShot = String.Format("{0}. ScreenShots: [{1}]", message, screenShotPath);
                }
                else
                {
                    messageWithScreenShot = String.Format("ScreenShots : [{0}]", screenShotPath);
                }

                foreach (String path in TakeScreenShots())
                {
                    messageWithScreenShot += String.Format(", [{0}]", path);
                }
            }
            return messageWithScreenShot;
        }

        public SeleniumHelperException()
            : base(AddScreenShotPathToMessage())
        {
        }

        public SeleniumHelperException(string message)
            : base(AddScreenShotPathToMessage(message))
        {
        }

        public SeleniumHelperException(string message, Exception innerException)
            : base(AddScreenShotPathToMessage(message), innerException)
        {
        }
    }

  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных