QTP Как сохранить изображения с веб-страниц - PullRequest
2 голосов
/ 08 августа 2011

Я хотел бы знать, возможно ли смоделировать процесс: щелкните правой кнопкой мыши на изображении -> нажмите «Сохранить изображение как ...» во всплывающем меню -> сохраните изображение на локальном компьютере.

Я попробовал функцию CaptureBitmap (), но в результате получился скриншот, сделанный QTP, а не тот же файл изображения, что и описанная выше процедура.

Есть ли другие способы?Большое спасибо заранее.

Аллен

1 Ответ

3 голосов
/ 08 августа 2011

Полагаю, это зависит от того, что вы хотите сделать. Если вы хотите сравнить растровое изображение, то параметры CaptureBitmap должны работать. Если вы хотите сравнить путь к изображению, вы можете использовать Image("x").GetROProperty("src").

Если вы действительно хотите сохранить файл изображения src, тогда, к сожалению, QTP не предоставляет способ взаимодействия с контекстным меню браузера. Вы можете попытаться использовать какой-нибудь сторонний механизм для загрузки изображения с URL-адреса src (например, wget ).


Редактировать: У меня только что была другая мысль, я не на работе, поэтому я не могу убедиться, что это будет работать, но я уверен, что это будет работать.

Сначала вызовите контекстное меню, чтобы сделать это, вам нужно изменить режим воспроизведения на устройство и запустить операцию RightClick.

 replayType = Setting.WebPackage("ReplayType") ' Store old replay mode
 Setting.WebPackage("ReplayType") = 2 ' change to device replay mode
 Browser("b").Page("p").Image("I").RightClick
 Setting.WebPackage("ReplayType") = replayType ' Revert to old mode

Затем отправьте письмо v в браузер, который выберет пункт меню Save (как в IE, так и в Firefox), используя объект воспроизведения устройства

Set deviceReplay = CreateObject( “Mercury.DeviceReplay” )
deviceReplay.SendString "v"

Теперь взаимодействуйте с диалоговым окном сохранения как обычным элементом управления Win32.

Мораль: Никогда не стоит недооценивать, что QTP позволит вам сделать, если вы попытаетесь достаточно усердно

...