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

Фотография

[QTP9.5]вставка скриншота в Test results


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

#1 Alya

Alya

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

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

Отправлено 08 сентября 2010 - 06:19

Добрый день!

есть некоторые проблемы, хотелось бы получить не больщую помощь.

1) в Test results сейчас вставляет диагностику операции, есть ли возможность вставлять туда скрин. чтобы пользователям было наглядно видно, результат до и после.

2) создали функцию. подвязали её в Resources. тем не менее система выдаёт такой вид ошибки "Несоответствие типа: "название функции"". есть подобная функция, различие между ними только в wait (1). эта функция работает корректно, а новая вываливается в ошибку.
  • 0

#2 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 17 сентября 2010 - 09:45

Добрый день.

1. Насколько я помню в версии 9.5 уже была включена собственная возможность вставки скриншота с помощью Reporter.ReportEvent. Если нет, то поищете по форуму. Где-то здесь кто-то уже выкладывал возможность логирования со скриншотами (была целая библиотека).

2. По такому описанию трудно что-то сказать. Приведите обе функции, строку где вызывается функция, которая выдает ошибку
  • 0

#3 Alya

Alya

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

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

Отправлено 21 сентября 2010 - 06:06

добрый день.

но в любом случае, сохранение скриншота происходит через файл(html, txt и т.д.). нет ли возможности сохранять в буфер, а потом оттуда вставлять. Чтобы не создавать для этого лишние файлы и не перебивать пути.
  • 0

#4 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 21 сентября 2010 - 16:53

но в любом случае, сохранение скриншота происходит через файл(html, txt и т.д.). нет ли возможности сохранять в буфер, а потом оттуда вставлять. Чтобы не создавать для этого лишние файлы и не перебивать пути.

День добрый.
Если честно, то не очень понятно, куда Вы хотите из буфера вставлять картинку, и где Вам требуется перебивать пути.
В 9.5. встроенной функциональности отправить скриншот в родной лог QTP нет. Такая опция появилась только в QTP 10.0
Там Вы можете передать последним параметром путь к файлу при вызове метода ReportEvent:
Reporter.ReportEvent status, title, decription, PathToScreenshot
Чтобы отправить картинку в буфер достаточно через SendKeys нажать кнопочку "PrintScreen", но, ума не приложу, что потом с этим скриншотом делать :)
Есть еще разного рода сторонние программки, которые по заданным сочетаниям клавиш снимают скриншоты и сохраняют по заранее заданому пути, именуя их по маске, чтобы файлы не перетирались.

P.S. С нерабочей функцией разобрались? Если нет, то приведите, пожалуйста, код обеих функций и то, как Вы их вызываете. Это сильно упростит анализ ошибки
  • 0

#5 Alya

Alya

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

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

Отправлено 23 сентября 2010 - 01:41

спасибо Вам большое, что откликнулись и ответили на мои вопросы :)

видимо не возможно реализовать в этой версии, но всё таки попробую объяснить. может мы друг друга не поняли :)
вот таким образом вставляем диагностику операции. то есть открываем диагностику, всё выделяем CTRL+A, потом CTRL+C и после сразу вставляем в result

Window("Банковская система COLVIR").Activate
Window("Банковская система COLVIR").WinMenu("Menu").Select "<Item 3>;<Item 3>"
Window("Диагностика").Activate
Window("Диагностика").WinObject("TSyntEdit").Click 259,160
Window("Диагностика").WinObject("TSyntEdit").Type micCtrlDwn + "ф" + micCtrlUp
Window("Диагностика").WinObject("TSyntEdit").Type micCtrlDwn + "с" + micCtrlUp


'strClipboard - содержимое буфера обмена
 strClipboard = ""
 Set objCL = CreateObject("Mercury.Clipboard")
 strClipboard = objCL.GetText  
Window("Диагностика").WinObject("TSyntEdit").Type  micEsc
Window("Банковская система COLVIR").Activate
Window("Банковская система COLVIR").WinMenu("Menu").Select "<Item 3>;<Item 1>"


Reporter.ReportEvent 2,  "Диагностика", strClipboard

не сохраняя в файл, а сразу из буфера в result. диагностика операции - это текста. теперь хотелось бы, чтобы то же самое получилось с скриншотом.
сделать print screen и сразу записать картинку в result.
  • 0

#6 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 23 сентября 2010 - 16:04

не сохраняя в файл, а сразу из буфера в result. диагностика операции - это текста. теперь хотелось бы, чтобы то же самое получилось с скриншотом.
сделать print screen и сразу записать картинку в result.

То же самое получится и со скриншотом. Единственная проблема — QTP будет думать, что ему, как и всегда, передали строку. А что получается, когда картинку хотят представить в виде текста, Вы можете посмотреть, открыв, например любой jpeg-файл в notepad.
  • 0

#7 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 23 сентября 2010 - 16:10

Window("Банковская система COLVIR").Activate
Window("Банковская система COLVIR").WinMenu("Menu").Select "<Item 3>;<Item 3>"
Window("Диагностика").Activate
Window("Диагностика").WinObject("TSyntEdit").Click 259,160
Window("Диагностика").WinObject("TSyntEdit").Type micCtrlDwn + "ф" + micCtrlUp
Window("Диагностика").WinObject("TSyntEdit").Type micCtrlDwn + "с" + micCtrlUp


'strClipboard - содержимое буфера обмена
 strClipboard = ""
 Set objCL = CreateObject("Mercury.Clipboard")
 strClipboard = objCL.GetText  
Window("Диагностика").WinObject("TSyntEdit").Type  micEsc
Window("Банковская система COLVIR").Activate
Window("Банковская система COLVIR").WinMenu("Menu").Select "<Item 3>;<Item 1>"


Reporter.ReportEvent 2,  "Диагностика", strClipboard

У меня еще пара вопросов возникла:
а почему нельзя взять текст непосредственно из объекта WinObject("TSyntEdit"), а не мучиться с буфером обмена?
На чем написан интерфейс Colvir'a? Судя по коду, QTP нормально не распознает пользовательский интерфейс Вашего приложения.
  • 0

#8 Alya

Alya

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

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

Отправлено 24 сентября 2010 - 04:12

интерфейс написан на delphi2010.

используем буфер для того, чтобы пользователи видели откуда мы берём эту диагностику.
  • 0

#9 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 28 сентября 2010 - 11:06

Для получения текста объекта может помочь метод GetVisibleText. Правда, если есть scroll, то этот метод по идее вернет только видимый на экране текст. Почитайте Help по данному методу.

Что касается скриншотов, то вставить скриншот прямо в results нельзя.

Так или иначе сначала его надо сохранить в какой-нибудь файл типа png или jpg. А в result можно вставить только ссылку.

Как правильно заметил Павел, встроенная и официальная поддержка скриншотов появилась только в версии 10.0. Для версий ниже использовалась недокументированная функциональность:

Reporter.ReportEvent eventStatus, eventHeader, eventDesc & "&amp;<IMAGE src=""" & FileNameBase & FileName & """' />"

Здесь
FileNameBase & FileName - это абсолютный путь к файлу скриншота, его надо формировать всегда уникальным.
eventDesc - текстовое описание события

Основой для того, чтобы в логе была картинка, является наличие в тексте строки &amp;


Чтобы сделать сам файл скриншота используется код:

Obj.CaptureBitmap FileNameBase & FileName

Obj - это любой QTP объект (WinObject, Window, WinEdit, WebEdit и т.д.) или объект Desktop. Создается скриншот видимой области объекта.
  • 0

#10 Alya

Alya

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

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

Отправлено 12 октября 2010 - 07:39

Благодарю всех за помощь. будем ждать покупки новой версии.
  • 0


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

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