Захватить изображение содержимого фрейма / всплывающего окна - PullRequest
0 голосов
/ 06 ноября 2011

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

Мне нужно исключить меню браузера из моих изображений, чтобы пользователь мог сопоставлять изображения контента между различными браузерами.

Это должно работать на любом разрешении ПК и в любом браузере.

Данные методы селена обеспечивают способ захвата всего окна:

Selenium.CaptureScreenshot(filename),
Selenium.CaptureEntirePageScreenshot(filename,kwargs)

Также при попытке расчета размера кадра селена укажите количество пикселей относительно кадра браузера, что означает, что (0,0) - это верхняя левая точка браузера, а не экран.

Как я могу захватить соответствующую область контента, используя селен в сочетании с .NET?

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

Я согласен с Паттерсоном использовать CaptureEntirePageScreenshotToString вместо CaptureEntirePageScreenshot.

Во-вторых, для сравнения вам нужна любая утилита сравнения изображений, которая выполняет работу по сравнению двух изображений или их частей, например, ISFW предоставляет ImageCompareUtil для реализации Java. В вашем случае вам нужно сравнить часть захваченного изображения с базовой. Тем не менее, вам потребуется некоторая логика для кросс-браузера, например, в случае FF захваченное изображение будет включать в себя все содержимое страницы, в то время как в случае IE оно включает только видимое содержимое.

Для другого разрешения вы можете изменить размер окна браузера до ожидаемого разрешения, прежде чем делать снимок экрана.

Надеюсь, это поможет.

0 голосов
/ 07 ноября 2011

Похоже, вы уже знаете ответ. Мы используем Selenium.CaptureEntirePageScreenshotToString(), потому что мы запускаем наши тесты таким образом, что браузер и сценарий тестирования могут не работать в одной и той же системе, но он использует тот же код в ядре, что и Selenium.CaptureEntirePageScreenshot(). Единственное отличие состоит в том, что наш способ возвращает изображение PNG в кодировке BASE64, поэтому нам не нужно получать его с диска.

...