The first recommendation is to use the NAME parameter of the FRAME command to specify the frame id rather than number. This is often more stable than using a frame number.
For example:
Code: Select all
FRAME NAME=main3
The following code snippet attempts to save an image which is located in a frame where the frame number is not known.
Code: Select all
Dim macroSaveImage
macroSaveImage = "CODE:"
macroSaveImage = macroSaveImage + "SET !TIMEOUT_STEP 1" + vbNewLine
macroSaveImage = macroSaveImage + "ONDOWNLOAD FOLDER=* FILE=box.png" + vbNewLine
macroSaveImage = macroSaveImage + "FRAME F={{loop}}" + vbNewLine
macroSaveImage = macroSaveImage + "TAG POS=1 TYPE=IMG ATTR=SRC:http://www.phprocket.com/images/offsite/iMacros/TestFrames/images/*.gif?* CONTENT=EVENT:SAVEPICTUREAS" + vbNewLine
Dim i
i = 0
Do
im.iimSet("loop", i)
If im.iimPlay(macroSaveImage) = 1 Then
Exit Do
End If
i = i + 1
Loop
Code: Select all
var macroSaveImage;
macroSaveImage = "CODE:";
macroSaveImage += "SET !TIMEOUT_STEP 1" + "\n";
macroSaveImage += "ONDOWNLOAD FOLDER=* FILE=box.png" + "\n";
macroSaveImage += "FRAME F={{loop}}" + "\n";
macroSaveImage += "TAG POS=1 TYPE=IMG ATTR=SRC:http://www.phprocket.com/images/offsite/iMacros/TestFrames/images/*.gif?* CONTENT=EVENT:SAVEPICTUREAS" + "\n";
var i = 0;
while (true)
{
iimSet("loop", i)
if (iimPlay(macroSaveImage) == 1)
{
break;
}
i++
}