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

Фотография

Скриншот


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

#1 Int_21h

Int_21h

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

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Александр

Отправлено 02 августа 2011 - 16:50

Здравствуйте!
Начал изучать SilkTest и столкнулся с проблемой нехватки литературы и наглядных примеров. Сам кое-как разобрался, но знаний, как вы понимаете, не хватает.

Суть вопроса - как сделать скриншот отдельного элемента, будь то окно программы, кнопка, менюшка и тд...
Я нашел в учебнике код

[-] STRING doScreen()
	[ ] STRING sBitmap
	[ ] 
	[-] withoptions
		[ ] BindAgentOption (OPT_BITMAP_MATCH_COUNT, 1)
		[ ] sBitmap = "{Path}\{FuncName}_{FormatDateTime (GetDateTime(), "_ddmmyyyy_hhnnss")}.bmp"
		[ ] Desktop.CaptureBitmap (sBitmap)
	[ ] return sBitmap

Так же прочел инфу по методу GetRect(); но тут немного не понял.
Буду благодарен за любые подсказки)
  • 0

#2 Skuayer

Skuayer

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

  • Members
  • PipPip
  • 115 сообщений
  • ФИО:Жуков Анатолий Викторович
  • Город:Санкт-Петербург

Отправлено 05 августа 2011 - 09:09

чтобы сделать скриншот окна - смотри метод CaptureBitmap()

GetRect() возвращает объект RECT - координаты элемента. в чем вопрос то?
  • 0

#3 Int_21h

Int_21h

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

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Александр

Отправлено 05 августа 2011 - 09:56

Использование метода

Desktop.CaptureBitmap (sBitmap)

делает скрин всего десктопа. Нужно сделать скрин только открытого окна. решение нашел такое:

MainWin("*some_window").CaptureBitmap (sBitmap)

В данный момент делаю все без использования предложенного выше метода GetRect(). Застрял на задании сделать скрины менбшки без выделенного менюайтема и кнопки с наведенным курсором мыши.
Вот что получилось у меня:

[-] testcase screenMenu() appstate none
	[ ] MainWin("*some_window").SetActive()
	[ ] MainWin("*some_window").Menu("some_id").Pick()
	[ ] MainWin("*some_window").MoveMouse()
	[ ] doScreenShot("Menu")
	[ ] 
	[ ] 
	[ ] 
[-] public  STRING  doScreenShot(STRING sName) 
	[ ] STRING sBitmap
	[ ] 
	[-] withoptions
		[ ] BindAgentOption (OPT_BITMAP_MATCH_COUNT, 1)
		[ ] sBitmap = "{path}\{sName}_{FormatDateTime (GetDateTime(), "_ddmmyyyy_hhnnss")}.bmp"
		[ ] MainWin("*some_window").DialogBox("some_id").CaptureBitmap (sBitmap)
	[ ] return sBitmap

Тут воспринимаю открытое меню как диалог_бокс. Далее путем передвижения курсора мыши снимается выделение. Но есть одно НО. Для других пунктов меню выделение не снимается. Есть соображения по этому поводу?

И второе. Скрипт наведения курсора мышки на кнопку и скрин кнопки:

	[ ] MainWin("*some_window").SetActive()
	[ ] MainWin("*some_window").CustomWin( "some_id").ToolBar("some_id").PushButton("some_id").MoveMouse()
	[ ] doScreenShot("mouse")
	[ ] 
	[ ] 
[-] public  STRING  doScreenShot(STRING sName) 
	[ ] STRING sBitmap
	[ ] 
	[-] withoptions
		[ ] BindAgentOption (OPT_BITMAP_MATCH_COUNT, 1)
		[ ] sBitmap = "{path}\{sName}_{FormatDateTime (GetDateTime(), "_ddmmyyyy_hhnnss")}.bmp"
		[ ] MainWin("*some_window").CustomWin("some_id").ToolBar("some_id").PushButton("some_id").CaptureBitmap (sBitmap)
	[ ] return sBitmap


на скрине вижу только кнопку с нажатой мышкой.
  • 0

#4 Skuayer

Skuayer

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

  • Members
  • PipPip
  • 115 сообщений
  • ФИО:Жуков Анатолий Викторович
  • Город:Санкт-Петербург

Отправлено 05 августа 2011 - 11:16

делает скрин всего десктопа. Нужно сделать скрин только открытого окна. решение нашел такое:

MainWin("*some_window").CaptureBitmap (sBitmap)

В данный момент делаю все без использования предложенного выше метода GetRect().


все правильно, я это и имел ввиду посмотреть)

Rect - {x координата, y координата, размер по х, размер по y}
Rect rect = MainWin("*some_window").GetRect()
MainWin("*some_window").CaptureBitmap (sBitmap,{rect.x, rect,y, size1, size2})
можешь варьировать размерами скрина. удобно когда надо сделать verifyBitmap(bitmap1,bitmap2) убрав ненужные элементы.
  • 0

#5 Int_21h

Int_21h

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

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Александр

Отправлено 05 августа 2011 - 16:38

Rect - {x координата, y координата, размер по х, размер по y}


Я думаю это не будет лучшим решением. Что если при данных условиях окно тестируемой программы будет передвинуто пользователем?
Следовательно координаты изменятся и тест рухнет? Или я что-то не правильно понимаю?
  • 0

#6 Skuayer

Skuayer

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

  • Members
  • PipPip
  • 115 сообщений
  • ФИО:Жуков Анатолий Викторович
  • Город:Санкт-Петербург

Отправлено 05 августа 2011 - 17:59


Rect - {x координата, y координата, размер по х, размер по y}


Я думаю это не будет лучшим решением. Что если при данных условиях окно тестируемой программы будет передвинуто пользователем?
Следовательно координаты изменятся и тест рухнет? Или я что-то не правильно понимаю?


GetRect возвращает координаты относительно парент окна
  • 0


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

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