Что нового

Выполнение JavaScript в Firefox

passwd

Новичок
Сообщения
30
Репутация
0
Здравствуйте. Подскажите, как можно переделать этот же скрипт но под FF.au3?

Код:
Local $oIE = _IECreate("https://example.com")


Local $oImgs = _IEImgGetCollection($oIE)

;Доступ к буферу обмена нужно разрешить в настройках IE

For $oImg In $oImgs
      If StringInStr($oImg.src, "logo.png") > 0 Then
      $oCtlRange = $oImg.document.body.createControlRange()
      $oCtlRange.addElement($oImg)
      $oCtlRange.execCommand('Copy', False)
      _ClipBoard_Open(0)
      $hBitmap = _ClipBoard_GetDataEx($CF_BITMAP)
      _ClipBoard_Close()
      _GDIPlus_Startup()
      $hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
      _GDIPlus_ImageSaveToFile($hImage, @DesktopDir & "\" & "logo.png")
      _GDIPlus_BitmapDispose($hImage)
      _GDIPlus_Shutdown()
EndIf
Next


В IE работает отлично, но в Firefox через FF.au3 пытался делать то же самое с помощью _FFCmd и чего-то не до конца всё понимаю. Заменяю Local $oImgs = _FFCmd(".images") а в ответ получаю:
Код:
_FFConnect: Browser:	Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
__FFSendJavaScripts: Sending functions to FireFox .......... done
__FFSend: try{window.content.top.document.images}catch(e){'_FFCmd_Err';};
__FFRecv: [object HTMLCollection] - {0: {...}, 1: {...}, 2: {...}, 3: {...}, 4: {...}, 5: {...}, 6: {...}, ...}
"C:\Users\Venimus\Desktop\AutoIt v3 Script.au3" (14) : ==> Variable must be of type "Object".:
For $oImg In $oImgs
For $oImg In $oImgs^ ERROR
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Никак не заменить, нужно все переписывать. Убирайте цикл по коллекции, ищите image с атрибутом src содержащим logo.png. Искать через querySelector, как только элемент найден, то значит знаете его полный путь и качаете картинку через InetGet.
А если путь к logo стандартный, какой нибудь http://site.ru/images/logo.png - то и FF не нужна.
 
Автор
passwd

passwd

Новичок
Сообщения
30
Репутация
0
А если картинка генерируется через PHP и путь к картинке выглядит так: ./image.php?ID=1234567890
 
Автор
passwd

passwd

Новичок
Сообщения
30
Репутация
0
Только одну и она вот такая: ./image.php?ID=1234567890
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Код:
Local $selector = "img[src*=image]"
If StringInStr($selector, "'") Then $selector = StringReplace($selector, "'", "\'")
Local $result = _FFCmd(".querySelector('" & $selector & "').src");
MsgBox(0,'src', $result)

Попробуйте это. Если src покажет путь, то отлично. Можно скачать через Inet**
 
Автор
passwd

passwd

Новичок
Сообщения
30
Репутация
0
Показывает путь к одной из картинок, но их там несколько, нужна именно та, которую генерирует php.
 
Автор
passwd

passwd

Новичок
Сообщения
30
Репутация
0
Да, путь картинки показывает, но скачивает пустой файл. Делал так:

Код:
#include <FF.au3>

_FFConnect()

Local $selector = "img[src*='image.php?ID']"
If StringInStr($selector, "'") Then $selector = StringReplace($selector, "'", "\'")
Local $result = _FFCmd(".querySelector('" & $selector & "').src");
MsgBox(0,'src', $result)

InetGet($result, @DesktopDir & "\img.jpeg")


Но обычные картинки скачивает нормально.
 
Автор
passwd

passwd

Новичок
Сообщения
30
Репутация
0
Всё, решил делать через Imacros.
Код:
ONDOWNLOAD FOLDER=C:\ FILE=image.jpg WAIT=YES 
TAG POS=1 TYPE=IMG ATTR=SRC:https://site.com/image.php?ID=* CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT
 
Верх