Imacros error log

Recently, I got a chance to work on and use a wonderful automated testing tool - iMacros [thanks to my friend Abhinav who kept giving me mo...

Recently, I got a chance to work on and use a wonderful automated testing tool — iMacros [thanks to my friend Abhinav who kept giving me more and more requirements to program with this tool]. Specifically I used iMacros as a plugin in firefox for testing web pages. I must admit, the folks @iMacros have done a marvellous job and kudos to them for this.
In this blog post I want to specifically talk about one thing that stumped me most of the time using this tool — «How do I log the detailed HTTP error (500, 403 etc….) to a log file & how do I take a screenshot when such a thing happens?». Here’s how I did it:

Saving a ScreenShot



iMacros provides for a SAVEAS command, using which you can take and save an image of the page displayed in the browser. I created a new macro, takeScreenShot.iim and here is the implementation


VERSION BUILD=7401110 RECORDER=FX
SAVEAS TYPE=PNG FOLDER={{SCRSHOTFOLDER}} FILE={{SCRSHOTFILENAME}}

Pretty simple huh!! Exactly! The only thing to note here is that I am providing the FOLDER and FILE values from {{SCRSHOTFOLDER}} and {{SCRSHOTFILENAME}} variables respectively. You can hard code the values if required, but I am not sure if it would be useful to hardcode the file name.
To send variables from outside to this macro you can use the iimSet command and set the values appropriately. Also, iMacros can only save files as png, so I always include «png» as an extension in the filename that I pass in to this macro.


To use this macro, simply call it from the place you want to take the screenshot (use iimPlay command).


Logging Errors
This one is a bit tricky. There are two parts to this that I tried to do:
1. Log the faulting Url and the time stamp
2. Log the faulting Url, timestamp and detailed error message

The first one turned out to be easy. Here is some js code to do this
var ret = iimPlay(<your macro name>);
if(ret != 1)
{
        var today = new Date();
      var dd = today.getDate();
      var mth = today.getMonth() + 1;
      var year = today.getFullYear();
      var hrs = today.getHours();
      var mins = today.getMinutes();
      var secs = today.getSeconds();
      var ts = mth + «-» + dd + «-» + year + »  » + hrs + «:» + mins + «:» + secs;

var message = «rn» + ts + » FAILED URL: » + window.frames[3].location.href + «rn»;

writeToFile(logFile, message);

}

I am not going to detail out the writeToFile method here. It is a simple method that takes in a file name and a message string to log and appends the message string to the end of the file.
The key thing to note here is the var ret = iimPlay(….) stuff. The iimPlay command returns a code that signifies the success/failure of the macro that it runs. A detailed list of error messages can be found here.
If the return code from iimPlay is not 1, then we know it’s a failure and we can proceed logging stuff.
You might want to add the error code (in ret) to the message string, for a more detailed log.

This brings us to our next question, what if we also wanted to log all the text/html for the erroneous page? Some might argue here that instead of logging the text on the page, won’t it be better if we just saved a screenshot instead? I agree, but there might be instances where you would want to send a log file across to the developer so that he can copy paste stuff from the same. Also, there might be some error info that might only be displayed when you expand the section containing that info. These kind of things cannot be easily done using a screenshot. So, here’s how I implemented logging the text:

First, we need a way to extract text of a web page. Here is a snippet that can be used to achieve this:

TAG POS=1 TYPE=HTML ATTR=* EXTRACT=TXT

Paste this snippet at the end of the macro that displays the web page you are testing.
Then, in the js code, you can use the iimGetLastExtract() command to get the extracted html of the web page.

var err_string = iimGetLastExtract();
Once we have this, it should be easy to log it to a file, right! But there is a catch…. iimGetLastExtract() does not return back extracts if the web page displayed is the result of an HTTP error (or if iimPlay’s return code is something other than 1). To get around this issue, I did a small hack (which apparently I don’t like, but did not have any other way of doing it as of this writing), wherein I included the following snippet in my macro that displayed the web page:

SET !ERRORIGNORE YES

Once you do this, iimPlay will always return 1 because it would ignore all the errors. That brings us to the next stumbling block:
our js code if(ret != 1), will not work anymore for detecting errors. To get around this, did the following:

     var err_string = iimGetLastExtract();
     if(err_string.indexOf(«Server Error in»)> -1)
     {
            //log timestamp and err_string here

     }

Although this does not look very efficient and neat, but for now it gets the job done for me. You can add more conditions to the if (just like the one for «Server Error in») for the errors that you expect to log and it should work the same.

That’s it for this post. Hope this helps someone who needs it.

Happy web testing!!

Раньше работало во всех моих скриптах, и те которые были мной сделаны раньше, работают и до сих пор.
А вот новые скрипты с недавнего времени, совсем перестали читать и записывать файлы =(((((
Чего я только не-пробовал… перелазил весь рунет и буржнет и этот форум. Ответа нету.

Пользуюсь браузером Pale Moon 25.8.1 и iMacros 8.8.2.1
(другие версии браузеров и imacros тоже перепробовал)

Вот функция, которая раньше работала, а теперь нет. (и что странно старые скрипты с этой же функцией работают!)
(перепробовал и другие всевозможные варианты работы с файловой системой через Js везде выдаёт одну и ту же ошибку, связанную с nsILocalFile.initWithPath)

Выдаёт всегда вот эту ошибку:

[Exception… «Component returned failure code: 0x80520001 (NS_ERROR_FILE_UNRECOGNIZED_PATH) [nsILocalFile.initWithPath]»  nsresult: «0x80520001 (NS_ERROR_FILE_UNRECOGNIZED_PATH)»  location: «JS frame :: resource://imacros/utils.js :: imns.FIO.openNode :: line 203»  data: no], line 199 (Error code: -991)

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

В самом скрипте я правильно пути к файлам прописываю, 100%. и перепроверял сотни раз, и перепробовал всё что можно уже.
А в старых скриптах всё работает! Хотя функция которую я здесь привёл ни на символ не-отличается ни в старых ни в новых скриптах.
Кодировку всегда и везде ставлю UTF-8, в связи с обретением описываемой проблемы уже и другие кодировки перепробовал тоже.

Сам разобрался что ошибка указывает на файл в браузере 

«JS frame :: resource://imacros/utils.js :: imns.FIO.openNode :: line 203»  data: no], line 199

Можно открыть его в браузерной строке вбив resource://imacros/utils.js он и откроеться
или в по адресу (у меня)

C:UserPalemoonProfilesDefaultextensions{81BF1D23-5F17-408D-AC6B-BD6DF7CAF670}modulesutils.js

Ошибка указывает на 203 строку и 199 строку, этого файла.
Вот этот кусок кода, куда ссылает ошибка. Символмии ** я пометил 199 строку, и *** 203.

Очевидно дело в команде «node.initWithPath(name);»…
Но что с этим делать, я не-знаю.

Помогите пожалуйста

iMacro CheatSheet — Command Reference

  • http://wiki.imacros.net/Command_Reference
  • http://wiki.imacros.net/iMacros_for_Firefox#Javascript_Scripting_Interface

Variables

iMacros supports 3 types of variables

  • The macro variables !VAR0 thru !VAR9. They can be used with the SET and ADD command inside a macro.
  • Built-in variables. They contain certain values set by iMacros.
  • User-defined variables. They are defined in-macro using the SET command.

Commands Reference.

' comment
The single quote character ‘ indicates a comment. If a line starts with ‘ everything else on this line is ignored. Typically this is used for comments or to disable specific parts of a macro.

ADD !VAR value
Add a value to a variable. You can also substract values by adding a negative value to the variable.

BACK
Opens the previously visited website.

CLEAR
Clears the browsers cache and all cookies.

CLICK X=n Y=m
Clicks on the HTML element at the specified X/Y coordinates.

SET !VAR1 EVAL('[javascript statements]')
This command allows you to evaluate values, and trigger macro errors if certain conditions are met.

FILEDELETE NAME=file_name
Deletes the file specified by Name. If no directory is specified in Name the file is assumed to lie in the iMacros Downloads subdirectory.

FILTER TYPE=IMAGES STATUS=(ON|OFF)
Filtering is a feature that allows you to change data on the website before it reaches the browser. Currently only the TYPE=IMAGES filter is supported.

FRAME (F=n|NAME=id)
Directs all following TAG or EXTRACT commands to the specified frame. The frame tag and number is automatically generated by clicking into a framed web page.

ONCERTIFICATEDIALOG C=n BUTTON=[OK|CANCEL]
Selects the client side certificate at position C from the upcoming dialog.

ONDIALOG POS=n BUTTON=(YES|NO|CANCEL) [CONTENT=some_content]
Handles upcoming Javascript dialogs. You can extract the text of a dialog by adding SET !EXTRACTDIALOG YES to your macro.

ONDOWNLOAD FOLDER=folder_name FILE=file_name WAIT=[YES|NO] CHECKSUM=[MD5|SHA:hexadecimal_string]
iMacros automatically detects and intercepts downloads. With this command, which has to occur before the download starts, the location and name of the saved file is determined.

ONERRORDIALOG BUTTON=(YES|NO) CONTINUE=(YES|NO)
If a page script error occurs on a webpage Internet Explorer opens an error dialog. This command handles such a dialog so your macros are not interrupted by script errors.

ONLOGIN USER=username PASSWORD=password RETRY=[YES|NO]
Handles login dialogs. The ONLOGIN command must appear before the macro command that navigates to the site that brings up the login dialog.

ONPRINT P=n BUTTON=(PRINT|CANCEL)
Handles print dialogs. The ONPRINT command must appear before the PRINT command which triggers the printer dialog to come up.

ONSECURITYDIALOG BUTTON=(YES|NO) CONTINUE=(YES|NO)
Command to handle security dialogs. If Continue=No is selected then the macro will stop if such a dialog appears.

ONWEBPAGEDIALOG KEYS=some_keys|MACRO=macro_file
Web page dialogs are similar to Javascript dialogs except they display HTML content.

PAUSE
Same as a manual click of the Pause button: Stops the execution of the macro. Waits for user to click Continue to continue.

PRINT
Prints the current browser window on your default printer.

PROMPT prompt_text variable_name [default_value]
Displays a popup to ask for a value. This value is stored in variable_name. This command can be used to change the variables !VAR1, !VAR2 or !VAR3, but not built-in variables like !DATASOURCE or dynamically generated variables.

PROXY ADDRESS=proxy_URL:port [BYPASS=page_name]
Connect to a proxy server to run the current macro.

REFRESH
Refreshes (Reloads) current browser window. Refresh includes sending a pragma:nocache header to the server (HTTP URLs only) which causes all elements of the website to be reloaded from the webserver.

SAVEITEM
SAVEITEM saves the document that is currently displayed in the web browser, for example a PDF file.

SAVEAS TYPE=(CPL|MHT|HTM|TXT|EXTRACT|BMP|PNG|JPEG) FOLDER=folder_name FILE=file_name
Saves information to a file. The SAVEAS command can save different information to a file.

SCREENSHOT TYPE=(PAGE|BROWSER) FOLDER=folder_name FILE=file_name
With this command, iMacros can take a screenshot of the Page/Browser that is being displayed.

SEARCH SOURCE=(TXT|REGEXP) IGNORE_CASE=YES EXTRACT=$1
The SEARCH commands works with page source, instead of looking at the web page object model (DOM) that the TAG command uses.

SET var value
Defines the value of a variable. The SET command supports the built-in variables, pre-defined user variables !VAR0 thru !VAR9, as well as user-defined macro variables.

SIZE X=n Y=m
Resizes the browser window.

TAB (T=n|OPEN|CLOSE|CLOSEALLOTHERS)
Sets focus on the tab with number n.

STOPWATCH ID=id
Measures the time in seconds between two STOPWATCH commands with the same identifier.

TAG POS=1 TYPE=SELECT FORM=NAME:form1 ATTR=NAME:select1 CONTENT=$Apple
The TAG command selects HTML elements from the current website. The identification of the element is given by providing the parameters POS, TYPE, FORM and ATTR. If the selected element is a link then the link is followed, i.e. the TAG command acts as if it clicks on the element.

TRAY (HIDE|SHOW)
Hides or shows the iMacros Browser during playback. A tray icon appears instead of the browser, just like with the command line switch -tray.

URL GOTO=some_URL
Navigates to a URL in the currently active tab.

VERSION BUILD=<version number>
Specifies the version of iMacros that created this macro. Please note this command is required by all macros.

WAIT SECONDS=(n|#DOWNLOADCOMPLETE#)
Waits for a specific time before continuing replay with the next command (timed delay).

Built-In Variables.

!CLIPBOARD
Copy data from and to the clipboard.

!COLn
Specifies the column which is used for input. Set n to the column number you want to use.

!DATASOURCE
Specifies the name and location of an input file for merging data with macro.

!DATASOURCE_COLUMNS
Specifies the number of columns in the input datasource.

!DATASOURCE_DELIMITER
Specifies the character used to delimit fields in your CSV input file.

!DATASOURCE_LINE
Specifies the line in the datasource which is used for input.

!ENCRYPTION
Specifies how to encrypt passwords you use in macros.

!ENDOFPAGE
Uses the !TAGSOURCEINDEX variable to define the end of page for iMacros. A search for a TAG element does not go below this limit.

!ERRORIGNORE
Tells iMacros to ignore errors. The replay of macros continues even if one or more commands fail.

!EXTRACT
Contains the extraction results.

!EXTRACT_TEST_POPUP
Toggles whether the extraction result in displayed during replay in a popup dialog.

!EXTRACTDIALOG
Extract information from a dialog. The entire text of a website dialog is extracted.

!FILE_LOG
Sets a specific log file name for the current macro. If no folder is supplied then the file will be written to the standard log file directory (V7.x) or the download directory (up to V6) of your iMacros installation.

!FILE_STOPWATCH
Sets the file name for the file that contains the stopwatch measurement data. By default the file name is performance_macroname.csv and
is located in the download directory of your iMacros installation.

!FILE_PROFILER
Sets the file name for the file that contains the performance profile data and enables profiling. By default all performance output of a given day is stored in the file Profiler_yyyy-MM-dd.xml, located in the download directory of your iMacros installation.

!FOLDER_DATASOURCE
Returns/sets the folder from which input files are read in by default. Setting this variable is valuable if several macros share an input file folder, or to separate the image files that each macro needs.

!FOLDER_STOPWATCH
Sets the folder location for the file that contains the stopwatch measurement data.

!IMAGEX
This value contains the X-coordinate of the last image found with the IMAGESEARCH or IMAGECLICK command. If the last image search did not find an image, then the value is -1.

!IMAGEY
This value contains the Y-coordinate of the last image found with the IMAGESEARCH or IMAGECLICK command.

!LOOP
Counts the current loop number in loop mode. Especially useful together with the POS attribute of the TAG command. With SET !LOOP 3 you can set a start value for the loop counter (the default value is 1).

!MARKOBJECT
Toggles whether a border should be drawn around the tagged element. The default value is YES.

!NOW
Contains the current time and date. In order to format the time and date you can use the following format codes, which you need to append to the variable after a colon.

!POPUP_ALLOWED
Allow popups for a given URL during a macro run. Technically this is the same as white-listing the URL permanently. The advantages are that you can store this information in the macro and thus make it run everywhere, without the user having to manually white-list the URL.

!REPLAYSPEED
Sets the replay speed to fast, medium or slow.

!REGION_BOTTOM
Defines the bottom boundary of a subregion to restrict IMAGESEARCH. For very large pages this should reduce the time needed for IMAGESEARCH.

!REGION_LEFT
Defines the left boundary of a subregion to restrict IMAGESEARCH. For very large pages this should reduce the time needed for IMAGESEARCH.

!REGION_RIGHT
Defines the right boundary of a subregion to restrict IMAGESEARCH. For very large pages this should reduce the time needed for IMAGESEARCH.

!REGION_TOP
Defines the top boundary of a subregion to restrict IMAGESEARCH. For very large pages this should reduce the time needed for IMAGESEARCH.

!SINGLESTEP
Enables single-step debugging: iMacros stops after every command and waits for the user to click the Continue button.

!STOPWATCHTIME
Contains the last measured response time value.

!STOPWATCH_HEADER
If set to NO tells iMacros to omit the header in the output performance file.

!TAGSOURCEINDEX
Retrieves the ordinal position of the object, in source order, as the object appears in the document’s all collection.

!TAGX
This value contains the X-coordinate of the HTML element found with the TAG command. The !TAGX/!TAGY values are automatically set after each TAG command.

!TAGY
This value contains the Y-coordinate of the HTML element found with the last TAG command.

!TIMEOUT_MACRO
Set the macro’s global timeout in seconds.

!TIMEOUT_PAGE
Set the page load timeout in seconds.

!TIMEOUT_STEP
Sometimes text or images do not appear immediatly after a page is loaded.

!URLCURRENT
Contains the current URL. This is the URL visible in the browser address bar at the time the variable is used.

!USERAGENT
Change the default user agent of the web browser.

!VAR0...!VAR9
Standard built-in variables for arbitrary use.

!WAITPAGECOMPLETE
If this variable is set to YES iMacros will wait until the top frame is completely loaded.

Scripting Interface Commands.

ret_code = iimOpen(String commandLine [, boolean openNewBrowser] [, int timeout]);
Initializes the Scripting Interface. It opens a new instance of the iMacros Browser, IE or Firefox, or connects to an existing instance (depending on the specified parameters). If the command fails for any reason it returns an error code.

ret_code = iimDisplay(String message [, int timeout]);
Displays a short message in the iMacros browser. A typical usage would be to distinguish several running iMacros Browsers or display information on the current position within the script.

ret_code = iimPlay(String macro [, int timeout]);
Plays a macro. After the macro has played all options that have been set with the iimSet command are reset. Use iimGetLastExtract to get the extracted text.

ret_code = iimSet(String VARNAME, String VARVALUE);
Defines variables for use inside the macro and assigns values to them.

ret_code = iimTakeBrowserScreenshot(String FILEPATH, int 0/1);
Takes a screenshot of the current browser content or the current website.

ret_code = iimClose([int timeout]);
Closes the iMacros browser.

ret = iimGetStopwatch(int index, string name, string value);
Returns the data of the STOPWATCH command. If there is no STOPWATCH command in the macro then iimGetStopwatch returns only one value (Total Runtime).

err_message = iimGetErrorText();
Returns the text associated with the last error.

extract = iimGetExtract([int index_of_extracted_text]);
Returns the contents of the !EXTRACT variable.

macro_node = iimGetPerfomance();
Returns the XML fragment containing the performance data of the last macro run, if performance logging has been enabled.

version_number = iimGetInterfaceVersion();
It returns a number in LONG format such as 80066532. Note that the iMacros main version number (as shown by VERSION) and the Scripting Interface version number as shown by iimGetInterfaceVersion are not identical.

Functions

Simulate a keypress

URL GOTO=javascript:var<SP>evt=document.createEvent("KeyboardEvent");evt.initKeyEvent("keyup",true,true,window,0,0,0,0,13,13);document.getElementById("TEXTBOX").dispatchEvent(evt);document.focus();

Output a file in UTF-8

function writeToFile(filename, data) {
    try {
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    } catch (e) {
        alert("Permission to save file was denied.");
        return 0;
    }
    var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);

    var outputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);

    var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].createInstance(Components.interfaces.nsIConverterOutputStream);

    file.initWithPath( filename );
    outputStream.init( file, 0x02|0x08|0x20, 0644, 0 );

    // write BOM first, then converted data.
    outputStream.write('u00EFu00BBu00BF', 3);

    converter.init(outputStream, "UTF-8", 0, 0);
    converter.writeString(data);
    converter.close(); // this closes outputStream also
}

Working with Image Maps

VERSION BUILD=6000707
TAB T=1
TAB CLOSEALLOTHERS
SET !REPLAYSPEED SLOW
URL GOTO=http://www.mls.ca/
SIZE X=876 Y=627
TAG POS=1 TYPE=AREA ATTR=HREF:http://www.mls.ca/map.aspx?AreaID=6240
TAG POS=1 TYPE=AREA ATTR=HREF:http://www.mls.ca/map.aspx?AreaID=8689
TAG POS=1 TYPE=AREA ATTR=HREF:http://www.mls.ca/map.aspx?AreaID=6287
TAG POS=1 TYPE=AREA ATTR=HREF:http://www.mls.ca/map.aspx?AreaID=6464
TAG POS=1 TYPE=AREA ATTR=HREF:http://www.mls.ca/PropertySearch.aspx?AreaID=5634&MapURL=%3fAreaID%3d6464
'Comment: New page loaded

Determine iMacros folder location from Javascript

function getiMacrosFolder(folderName) {
   var pname;
   switch (folderName) {
      case "Macros" :
         pname = "defsavepath";
         break;
      case "DataSources" :
         pname = "defdatapath";
         break;
      case "Downloads" :
         pname = "defdownpath";
         break;
      case "Logs" :
         pname = "deflogpath";
         break;
      default :
         throw folderName + " is not a valid iMacros folder name";
         break;
   }
   return imns.Pref.getFilePref(pname).path;
}

var downloadFolder = getiMacrosFolder("Downloads");

Automate Creation of Google Accounts (disable JS in browser before running)

VERSION BUILD=5200814
TAB T=0
TAB CLOSEALLOTHERS
CLEAR
SET !ENCRYPTION NO
URL GOTO=https://www.google.com/accounts/Login
PROMPT username !VAR1
TAG POS=1 TYPE=INPUT:PASSWORD FORM=ACTION:LoginAuth ATTR=ID:Passwd CONTENT=
TAG POS=1 TYPE=B ATTR=TXT:Create<SP>an<SP>account<SP>now<SP>
SET !VAR2 {{!VAR1}}
ADD !VAR2 @temporaryinbox.com
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:createaccount ATTR=NAME:Email CONTENT={{!VAR2}}
TAG POS=1 TYPE=INPUT:PASSWORD FORM=NAME:createaccount ATTR=NAME:Passwd CONTENT=YOURPASSWORD
TAG POS=1 TYPE=INPUT:PASSWORD FORM=NAME:createaccount ATTR=NAME:PasswdAgain CONTENT=YOURPASSWORD
TAG POS=1 TYPE=SELECT FORM=NAME:createaccount ATTR=ID:loc CONTENT=228
PROMPT captcha !VAR3
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:createaccount ATTR=ID:newaccountcaptcha CONTENT={{!VAR3}}
TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:createaccount ATTR=ID:submitbutton&&VALUE:I<SP>accept.<SP>Create<SP>my<SP>account.
'
'Verify Email
'
'Wait a few seconds for email to arrive
WAIT SECONDS=3
'
'
URL GOTO=http://www.temporaryinbox.com/
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:quickaccess ATTR=NAME:inbox CONTENT={{!VAR1}}
TAG POS=1 TYPE=INPUT:IMAGE FORM=NAME:quickaccess ATTR=NAME:&&VALUE:
TAG POS=1 TYPE=TD ATTR=TXT:accounts-noreply@google*
TAG POS=1 TYPE=B ATTR=TXT:http://www.google.com/accounts/VE?c=*
TAB T=2
'Done!

Delete User Facebook Activity

VERSION BUILD=8920312
TAB T=1
SET !ERRORIGNORE YES
URL GOTO=https://www.facebook.com/<YOUR FACEBOOK USERNAME HERE>/allactivity?privacy_source=activity_log&log_filter=cluster_11
' Eventually, depending on how many posts there are, you'll need to start manually skipping to years.
' Uncomment the line below and decrement the year as needed.
'TAG POS=1 TYPE=A ATTR=HREF:/< USERNAME >/timeline/2010
WAIT SECONDS=5
URL GOTO=javascript:window.scrollBy(0,100000)
TAG POS=1 TYPE=A ATTR=aria-label:"Allowed on Timeline"
TAG POS=2 TYPE=SPAN ATTR=TXT:Delete
WAIT SECONDS=1
TAG POS=1 TYPE=BUTTON FORM=class:_s ATTR=TXT:Delete<SP>Post
WAIT SECONDS=252525

Captcha Solver

VERSION BUILD=8820413 RECORDER=FX
TAB T=1

ONDOWNLOAD FOLDER=c: FILE=captcha.jpg

TAG POS=1 TYPE=IMG ATTR=HREF:*captcha* CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT

SET !EXTRACT_TEST_POPUP NO
TAB OPEN
TAB T=2

URL GOTO=http://api.captchasolutions.com/solve
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.captchasolutions.com/solve ATTR=NAME:p CONTENT=imacros
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.captchasolutions.com/solve ATTR=NAME:key CONTENT=YOUR_API_KEY_HERE
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.captchasolutions.com/solve ATTR=NAME:secret CONTENT=YOUR_SECRET_KEY_HERE
TAG POS=1 TYPE=INPUT:FILE FORM=ACTION:http://api.captchasolutions.com/solve ATTR=NAME:captcha CONTENT=C:captcha.jpg
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:http://api.captchasolutions.com/solve ATTR=VALUE:Send
wait seconds=5
TAG POS=6 TYPE=TD ATTR=* EXTRACT=TXT
SET !VAR1 {{!EXTRACT}}

TAB CLOSE
TAB T=1

TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:NoFormName ATTR=NAME:captcha CONTENT={{!var1}}

iMacros / Javascript Boilerplate

// iMacros Bootstrap - Write your macros with JavaScript.
// Be careful, you need to rename and set the extension of your macro to ".js".


// 1. Variables Initialization.


var variable1, variable2, variable3;

macro = "";

variable1 = "";

variable2 = "";

variable3 = "";


// 2. Built-in Variables & Macro Initialization.


macro += "CODE:" + "n";

macro += "SET !TIMEOUT_STEP 2" + "n";

macro += "SET !TIMEOUT_TAG 2" + "n";

macro += "SET !TIMEOUT_PAGE 45" + "n";

macro += "SET !ERRORIGNORE YES" + "n";


// 3. Clear Cookies, Cache and Set a Proxy


macro += "CLEAR" + "n";

macro += "PROXY ADDRESS=" + proxy + "n";


// 4. Action 1.


macro += "TAB T=1" + "n";

macro += "TAB CLOSEALLOTHERS" + "n";

macro += "WAIT SECONDS=5" + "n";

macro += "URL GOTO=https://gentlenode.com/" + "n";


// 5. Action 2.


macro += "URL GOTO=http://journal.gentlenode.com/" + "n";

macro += "WAIT SECONDS=5" + "n";


// 7. Clear Browser.


macro += "WAIT SECONDS=1" + "n";

macro += "CLEAR" + "n";


// 8. Run the Macro.


iimDisplay("iMacro is now running.");

iimPlay(macro);

Autovisit LinkedIn Profile

// Auto-visit profiles on Linkedin with iMacros
// Configure your linkedin credentials, the group and your proxy if needed.
// To learn more about iMacros: http://bit.ly/1CImBoM


// 1. Variables Initialization


var macro, proxy, linkedinEmail, linkedinPassword, linkedinGroup, i, j;

macro = '';

proxy = '';

linkedinEmail = 'youremail@gmail.com';

linkedinPassword = 'password';

linkedinGroup = 'https://www.linkedin.com/groups?viewMembers=&gid=4631551&sik=1422235539201'


// 2. Macro Initialization


macro += 'CODE:' + 'n';

macro += 'SET !TIMEOUT_STEP 2' + 'n';

macro += 'SET !TIMEOUT_TAG 2' + 'n';

macro += 'SET !TIMEOUT_PAGE 45' + 'n';

macro += 'SET !ERRORIGNORE YES' + 'n';


// 3. Clear Cookies, Cache and Set a Proxy


macro += "CLEAR" + "n";

if (proxy !== "") {
  macro += "PROXY ADDRESS=" + proxy + "n";
}


// 4. Linkedin Sign In


macro += 'TAB T=1' + 'n';

macro += 'TAB CLOSEALLOTHERS' + 'n';

macro += 'WAIT SECONDS=1' + 'n';

macro += 'URL GOTO=https://www.linkedin.com/' + 'n';

macro += 'TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:login ATTR=NAME:session_key CONTENT=' + linkedinEmail + 'n';

macro += 'TAG POS=1 TYPE=INPUT:PASSWORD FORM=NAME:login ATTR=NAME:session_password CONTENT=' + linkedinPassword + 'n';

macro += 'WAIT SECONDS=2' + 'n';

macro += 'TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:login ATTR=NAME:signin' + 'n';


// 5. Auto-Visit & Close Profiles


macro += 'WAIT SECONDS=2' + 'n';

macro += 'URL GOTO=' + linkedinGroup + 'n';

for (i = 2; i <= 25; i++) {

  for (j = 1; j <= 20; j++) {
    macro += 'EVENT TYPE=CLICK SELECTOR="HTML>BODY>DIV:nth-of-type(4)>DIV:nth-of-type(3)>DIV:nth-of-type(2)>DIV>UL>LI:nth-of-type(' + j + ')>SPAN>STRONG>A>IMG" BUTTON=0 MODIFIERS="meta"' + 'n';
    macro += 'WAIT SECONDS=2' + 'n';
  }

  macro += 'TAB T=2' + 'n';

  for (j = 1; j <= 20; j++) {
    macro += 'TAB CLOSE' + 'n';
  }

  macro += 'WAIT SECONDS=20' + 'n';
  macro += 'TAG POS=1 TYPE=A ATTR=TXT:' + i + 'n';

}


// 6. Run The Macro


iimDisplay("iMacro is now running. Let's hack growth.");

iimPlay(macro);

Perl Wrapper for iMacros Scripts

#!/usr/local/bin/perl

########################################################################################
# PERL WRAPPER FOR iMACRO SCRIPTS
# This code was written by me to be open source. There are no license restrictions.
# - Dave Grossman
########################################################################################
# Version 1.0   29 JAN 2008      Basic demo
########################################################################################

# Make sure to set iMacros browser -> Tools -> Options -> Paths -> FolderDownloads

use Win32::OLE;

$GlobalMacro = ''; # Global instance of iMacro referred to within the Macros below

sub Main
{
   # Local variables
   local $Macro, $RetCode, $Result;

   #--- iMacros starting --------------
   &StartMacroSession;

   &Macro_Startup;

   &MacroUrl("google.com");   # Go to the Google home page

   $Macro = <<"EOL";
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:f ATTR=NAME:q CONTENT=iOpus
TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:f ATTR=NAME:btnG
TAG POS=1 TYPE=A ATTR=HREF:http://www.iopus.com/
TAG POS=1 TYPE=A ATTR=HREF:http://www.iopus.com/imacros/
EOL

   ($RetCode, $Result) = &PlayMacro($Macro);   # Click through to iMacros

   ($RetCode, $Result) = &Macro_ExtractHtmlPage;   # Save the page
   &MacroSaveAs("temp.html");

   &EndMacroSession;
   #--- iMacros ended--------------

   print "$Resultn";   # Print the saved page

   print "nALL DONEn";
}

&Main;

exit;

########################################################################################
#--- Basic iMacro functions ----------------------------

sub StartMacroSession {
   $GlobalMacro = Win32::OLE->new('imacros') or die "Win32:OLE problemn";
   $GlobalMacro->{Visible} = 1;
   $GlobalMacro->iimInit();
   print "n***** iMacros started *****n";
}

sub PlayMacro {
   local($Macro) = @_;
   local $RetCode = '';
   local $Result = '';
   $Macro =~ s/sn/n/g;      # Eliminate trailing whitespace on each line
   $Macro =~ s/n/rn/g;      # Change line terminator to vbNewLine
   $Macro =~ s/rrn/rn/g;   # But be sure not to overdo it
   $RetCode = $GlobalMacro->iimPlay("CODE:$Macro") ;
   if($RetCode < 0) { $Result = $GlobalMacro->iimGetLastError(); }
   else { $Result = $GlobalMacro->iimGetLastExtract; }
   return ($RetCode, $Result);
}

sub EndMacroSession
{
   $GlobalMacro->iimExit();
   print "n***** iMacros ended *****n";
}

########################################################################################
# Higher level iMacro functions - all start with "Macro"
########################################################################################

# BACK - Like clicking the "Back" button on the browser
sub MacroBack { return &PlayMacro("BACK"); }

# FILTERIMAGES - Turns off images on subsequent pages
sub MacroFilterImages { return &PlayMacro("FILTER TYPE=IMAGES STATUS=ON"); }

# LOGIN
sub MacroLogin
{
   local($Url, $UserName, $Password) = @_;
   return &PlayMacro("ONLOGIN USER=$UserName PASSWORD=$PasswordnURL GOTO=$Url");
}

# ONDOWNLOAD - Sets file store context for next URL
sub MacroOnDownload
{
   local($FileName) = @_;
   return &PlayMacro("ONDOWNLOAD FOLDER=* FILE=$FileName");
}

# PAUSE
sub MacroPause { return &PlayMacro("PAUSE"); }

# REFRESH
sub MacroRefresh { return &PlayMacro("REFRESH"); }

# SAVEAS - Save current page as html
sub MacroSaveAs   # Call WAIT before using this
{
   local($FileName) = @_;
   unlink $FileName;
   return &PlayMacro("SAVEAS TYPE=HTM FOLDER=* FILE=$FileName");
}

# TAB - Only use this browser tab
sub MacroTab { return &PlayMacro("TAB CLOSEALLOTHERS"); }

# TAG - Very complicated command with many parameters. See CheckTagString below for explanation.
sub MacroTag
{
   local($InputString) = @_;
   local $Macro = &CheckTagString($InputString);
   local ($RetCode, $Result) =  &PlayMacro($Macro);
   $Result =~ s/[EXTRACT]$//;
   return ($RetCode, $Result);
}

# URL - Go to URL
sub MacroUrl
{
   local($Url) = @_;
   return &PlayMacro("URL GOTO=$Url");
}

# WAIT
sub MacroWait { return &PlayMacro("WAIT SECONDS=#DOWNLOADCOMPLETE#"); }

########################################################################################
# Still higher level functions - all start with "Macro_"
########################################################################################

sub Macro_Startup
{
   return &PlayMacro("TAB T=1nTAB CLOSEALLOTHERS");
}

sub Macro_ExtractHtmlPage
{
   $Macro = "TAG POS=1 TYPE=HTML ATTR=*:* EXTRACT=HTM";
   local ($RetCode, $Result) =  &PlayMacro($Macro);
   $Result =~ s/[EXTRACT]$//;
   return ($RetCode, $Result);
}

########################################################################################
# Utility function for TAG
########################################################################################
# Check TAG string to make sure it looks reasonable
#
# To choose an item on the page:
#   TYPE   :=X for the container <X>...</X>, e.g.,
#         =A follows links
#         =SELECT
#         =INPUT:TEXT
#         =INPUT:HIDDEN
#
#   ATTR
#      :=LHS:rhs to represent the attribute assignment LHS=rhs (&& boolean allowed), e.g.,
#         =TXT:NameOfLink
#         =HREF:UrlOfLink
#         =ID:Id
#         =VALUE:Value
#   POS
#         =CardinalNumberOfItem with specified TYPE and ATTR
#
# Or to choose a FORM
#   FORM
#      =NAME:NameOfLink
#
# To select from a SELECT list:
#   CONTENT
#      =EVENT:#SAVEITEM
#      =EVENT:#MOUSEOVER
#      =IndexInSELECTlist
#      =$NameInSELECTList
#      =%ValueInSELECTList
# To insert INPUT:
#   CONTENT
#      =ValueToInsert
#
# To extract data (see also SAVEAS):
#   EXTRACT
#      =TXT (eliminates all HTML)
#      =HTM (full html of item)
#      =HREF (URL of item)
sub CheckTagString
{
   local($InputString) = @_;

   # Make associative array of parms and their values
   local @Parms = split(/s/, $InputString);
   local %Parms = ();
   local $i;
   for($i = 0; $i <= $#Parms; $i++)
   {
      local ($LHS,$RHS) = split(/=/, $Parms[$i]);
      $Parms{$LHS} = $RHS;
   }

   # Unpack the associative array
   local $OutputString = 'TAG';
   local $Error = 0;
   if(exists($Parms{'TYPE'}))
   {
      local $Type = $Parms{'TYPE'};
      $OutputString .= " TYPE=$Type";
       $Pos =~ s/s//;
      if(length($Type) < 1 || $Type ne $Parms{'TYPE'}) { $Error += 1; }
   }
   if(exists($Parms{'POS'}))
   {
      local $Pos = $Parms{'POS'};
      $OutputString .= " POS=$Pos";
       $Pos =~ tr/0-9//cd;
      if($Pos <= 0 || $Pos ne $Parms{'POS'}) { $Error += 2; }
   }
   if(exists($Parms{'ATTR'}))
   {
      local $Attr = $Parms{'ATTR'};
      $OutputString .= " ATTR=$Attr";
      $Attr =~ s/s//;
      if($Attr ne $Parms{'ATTR'}) { $Error += 4; }
      local @Attr = split(/&&/, $Attr);
      local $i;
      for($i = 0; $i <= $#Attr; $i++)
      {
         local @AttrSubcommand = split(/:/, $Attr[$i]);
         unless (($AttrSubcommand[0] eq 'TXT' ||
            $AttrSubcommand[0] eq 'HREF' ||
            $AttrSubcommand[0] eq 'ID' ||
            $AttrSubcommand[0] eq 'VALUE' ||
            $AttrSubcommand[0] eq '*')
            && length($AttrSubcommand[1]) > 0)
         { $Error += 8; }
      }
   }
   if(exists($Parms{'FORM'}))
   {
      local $Form = $Parms{'FORM'};
      $OutputString .= " FORM=$Form";
      local @Form = split(/:/, $Form);
      unless ($Form[0] eq 'NAME' && length($Form[1]) > 0) { $Error += 16; }
   }
   if(exists($Parms{'CONTENT'}))
   {
      local $Content = $Parms{'CONTENT'};
      $OutputString .= " CONTENT=$Content";
      local $Leng = length($Content);
      unless((substr($Content, 0, 6) eq 'EVENT:' && $L > 6) || $L > 0) { $Error += 32; }
   }
   if(exists($Parms{'EXTRACT'}))
   {
      local $Extract = $Parms{'EXTRACT'};
      $OutputString .= " EXTRACT=$Extract";
      unless($Extract eq 'TXT' || $Extract eq 'HTM' || $Extract eq 'HREF') { $Error += 64; }
   }

   if($Error > 0) { die "Fatal error $Error in CheckTagString for InputString=$InputStringn"; }
   return $OutputString;
}

License

Windows License 1/10/16

Key
DVT7ZV73M7XZCW4WIN85AFB5X4J5G5
DVTDPSDQBM4TBPSB55ZZY3RHVADED5
DVTS6KPJJBJIU42M3ZDK4CSIU3U2H5
DVTVRVEB6DCBYNHC63BN86RUDC3MB5
DVTVS5SQKXXP8A3Q72YBN7GRTPFJG5

I have a task where I need to log all the user actions done in Chrome browser. Like a person typing anything in search box, clicking a page,etc. I need to save this as a log and read from that for further steps.

I am able to record the actions using Imacros in chrome. But when i try to save it as file it gives the following error. Can anyone please help?

> Please install file support for iMacros to save macro as a file

После установки (перезапуска), на панели навигации, появится значок imacros, нажимаем.

С левой стороны появится панель imacros. В окне imacros будут располагаться макросы.

На компьютере появятся 5 папок .

1 папка — Imacros будет располагаться в документах.

Пуск — Документы — imacros

В папке imacros будут 3 папки : Macros, Datasources и Downloads

Macros — папка, где будут расположены макросы для их отображения в окне imacros.

Datasources — по умолчанию imacros с этой папки извлекает информацию из текстовых документов для вставки их в различные места на веб страницах.

Downloads — по умолчанию imacros в данную папку сохраняет различные элементы с веб страниц: текст в текстовый файл, скриншот капчи и т.д.

В папке Macros находится 1 папка Demo-Firefox

Demo-Firefox — папка, в которой расположены различные макросы для пробы, ознакомления с ними о том, как они работают. По желанию папку можно удалить.

Вернёмся к панели imacros

Вкладка «Воспр.»

Во вкладке «Воспр.» находятся кнопки:

Сначала, мы должны из окна imacros выбрать тот макрос, который хотим воспроизвести.

Воспроизвести — воспроизводит один раз (1 цикл) макрос и останавливается.

Пауза — в процессе работы макроса, его можно приостановить, а затем, продолжить действия.

Стоп — полностью прерывает и останавливает работу макроса.

Воспр. (Цикл) — Воспроизводит макрос столько раз, сколько было указано в поле «Макс». Максимум можно указать 99999 циклов. Минимум 1.

Поле «Текущий» — отображает текущий повтор (цикл) макроса.

Вкладка «Запись»

Во вкладке «Запись» находятся кнопки:

Запись — начинает записывать внутри браузера действия мышки и клавиатуры. После нажатия кнопки запись, в окне imacros создаётся макрос под названием #Current.iim, в котором записываются действия.

Сохранить как — сохраняет записанный макрос в указанную папку.

Стоп — останавливает запись макроса и сохраняется в окне imacros.

Record options — режим записи.

Сохр. страницу — сохраняет html страницу на компьютер.

Take Screenshot — сохраняет в папку Downloads полный скриншот веб страницы.

Удал. кеш куки — удаляет из браузера сохранённые данные, кеша и куки.

Ждать при воспр. — после нажатия кнопки «Запись», можно нажать на кнопку «Ждать при воспр.» и указать время ожидания в секундах перед следующим дествием- от 1 и выше.

Вкладка «Manage»

Во вкладке «Manage» находятся кнопки:

Редактировать — выбираете макрос или скрипт и нажимаете редактировать. Откроется окно с кодом макроса/скрипта, редактируете код и сохраняете. Также, можно отредактировать код, нажав правой кнопкой мышки на макрос/скрипт и выбрать — редактировать.

Поделиться Макро — позволяет отправить на электронную почту ваш макрос. Считаю, легче открыть папку macros, скопировать макрос(ы)/скрипт или папки с макросами, вставить на флешку. Их можно как обычные файлы прикреплять к письму на почте и отправлять. Делиться можно как обычными файлами.

Обновить список — если вы поместили в папку macros: макросы, скрипты, папки с макросами и в это время была открыта панель imacros в браузере, то они сразу не отобразятся, нужно нажать на «Обновить список» или закрыть панель imacros и заново открыть.

Опции — настройки imacros, можно задать следующие значения из основных, это: скорость воспроизведения макроса/скрипта, пути к папкам, в которых лежат макросы. Отдельно к опциям мы ещё вернёмся.

Помощь — открывает веб страницу imacros с различными пояснениями на английском языке.

Локальный тест — отключает от сети, чтобы воспроизвести макрос/скрипт без использования Интернета.

Онлайн тест — заново подключается к сети Интернет.

Отправить на сервер — отправляет макрос или скрипт на сервер.

Основные настройки imacros

Дальше, рассмотрим основные настройки (необходимые, важные).

Manage — Опции — General

В опциях imacros, во вкладке General, можно установить следующие значения:

1. Скорость воспроизведения макроса/скрипта: Быстро, средне, медленно.

Оптимальный вариант — средне.

2. Скролировать объект — когда макрос нажимает на объект на веб странице: на фото, на ссылку, то страница перескакивает на данные объекты. Лично мне это не нравится, так как постоянно страницу мотает то вверх, то вниз. Снимаем галочку.

3. Подсвечивать объект — подсвечивает объекты, куда макрос нажимает или заполняет поля и т.п. Удобно, оставляем галочку.

4. Use F8 — особо не имеет значения.

5. Временное ограничение (в секундах) — во время загрузки веб страницы, отсчитывает 60 секунд (по умолчанию). Если страница продолжает грузиться (открываться), а 60 секунд прошли, то макрос продолжает выполнять дальше остальные действия, не дожидаясь полной загрузки страницы.

6. Показывать Javascript во время проигрывания — кроме макросов, существуют ещё управляющие джава скрипты, которые управляют макросами. Коды в макросе и в скрипте отличаются. Если поставить галочку, то при воспроизведении скрипта, в окне imacros будет показываться код скрипта. Если снять галочку, то при воспроизведении, код показываться не будет, а будет только код макросов.

7. Profile macro performance — сохраняет в папке Downloads в файлах .xml дату, время воспроизведённых макросов и их название. Лично я его не использую, снимаем галочку.

Для сохранения внесённых изменений нажимаем на Apply .

Пути к папкам

Manage — Опции — Paths

Во вкладке Paths находятся настройки по расположению папок, необходимых для работы.

1. Папка макросов. У каждого пользователя вместо User могут быть другие имена. По этому, если у Вас не отображаются макросы/скрипты/папки из папки macros, значит, путь к папке макросов указан не верно. Нажмите с правой стороны на значок лупы и укажите путь к папке macros. Также можно указать любую папку на компьютере, в котором будут расположены макросы.

2. Папка данных. С данной папки imacros берёт данные для внесения их на веб страницу. Можете также указать свой путь.

3. Папка закачек. В данную папки imacros сохраняет элементы с веб страниц. Это могут быть фотографии, текст и т.д.

4. Store data in profile folder. Если вы используете портативную версию браузера мазилы, то поставьте галочку. Макросы сохраняете на флешке. И, при запуске с флешки портативной версии браузера, макросы отобразятся в окне imacros.

5. Использовать внешний редактор. При редактировании макроса или скрипта, их код открывается через сам редактор imacros. В данном поле можно указать путь к своей программе, через которую вы хотите открывать и редактировать макрос, скрипт.

Если вы хотите узнать ещё больше про imacros или у вас возникли проблемы при работе с ним:
выдаёт ошибку, что неверный путь; не отображаются скрипты в окне; зависает imacros то, рекомендую перейти в раздел статьи и узнать как решить эти проблемы.

Команда SAVEAS iMacros позволяет сохранять данные в файл. Можно сохранять различную информацию: извлеченные данные с сайта, техническую информацию о работе макроса, так же можно сохранять скриншоты сайта. Вы можете изменить или добавить данные к первоначальному названию файла используя знае «+» (смотрите примеры). Очень полезной в таком случае оказывается встроенная переменная !NOW в iMacros.

Работает в:

Синтаксис:

Параметры:

  • TYPE
    Параметр определяет тип данных для сохранения. Доступны следующие опции:
  • CPL
    Сохранение всей веб-страницы. Файлы и изображения сохраняются отдельно и хранятся в папке.
  • MHT
    Веб-страница и изображения сохраняются в одном файле (веб-архив).
  • HTM
    Веб-страница сохраняется без каких-либо изображений. Если страница имеет фреймы, все оформление HTML страницы автоматически сохраняются.
  • TXT
    Сохраняется только текст страницы, все HTML теги опускаются.
  • EXTRACT
    Значение переменной !EXTRACT сохраняется в формате CSV.
    Примечание: значение переменной !EXTRACT сбрасывается после вызова
  • BMP (поддерживает Flash, Java и Silverlight)
    Сохраняет скриншот веб-страницы.
  • PNG
    Как сказано выше: сохраняет скриншот страницы.
  • JPEG
    Как сказано выше: сохраняет скриншот веб-страницы.
  • FOLDER
    Указывает путь к папке, в которой сохранится файл. Используйте символ «*» для использования стандартной папки, указанной на вкладке Paths в Folder Downloads, например, C:UsersadminDocumentsiMacrosDownloads. Если в пути содержатся пробелы, их необходимо прописывать так, как указанно ниже в примерах.
  • FILE
    Определение имени файла, под которым файл будет сохранен. Если расширение файла не задано, то расширение файла принимается по умолчанию.
    Если вы используете FILE=*, то по умолчанию используется имя файла «extract.csv».
    Используйте «+» для того, что бы добавить дополнительную информацию к исходному имени файла перед указанием расширения файла.
  • Примечания:

    • Формат MHT не поддерживается в Firefox
    • Форматы CPL и BMP не поддерживаются в Chrome
    • Сохранение скриншота: Когда делается скриншот в браузере iMacros или Firefox, сохраняется вся веб-страница (т.е. если на странице есть полоса прокрутки, то сохраняется не только то что вы видите, а вся страница целеком). При сохранении скриншота в Internet Explorer, сохраняется только видимая часть веб-страницы (то что вы видите на экране). В настоящее время только iMacros браузер и макрос для IE могут делать скриншот не-HTML содержимого, такое как Flash, Silverlight и др.

    Примеры:

    Сохранить текущую веб-страницу в файл с именем homepage_current.mht:

    Сохранить скриншот текущей страницы при помощи SAVEAS iMacros с текущей датой в имени файла:

    Сохранить извлеченный текст по умолчанию файл («extract.csv» в стандартную папку iMacros «Downloads»):

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

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

    Извлечь текст (например, название) и использовать его в качестве имени файла для сохранения HTML страницы:

    Так что, если извлечь текст «Продажи в январе 2011» страница будет сохранена как «отчет_Продажи в январе 2011.htm». Это очень полезно, если вы создаете макрос, который сохраняет много страниц, работая в цикле. Таким образом, вы можете задать каждой сохраняемой странице отдельное имя файла.

    Навигация

    Команды

    iimGetExtract

    Отправлено 4 июн. 2020 г., 08:23 пользователем Норрин Радд

     

    [

    обновлено 19 нояб. 2020 г., 13:28
    ]

    Возвращает содержимое переменной !EXTRACT. Если последней командой была iimPlay и если EXTRACT используется внутри макроса, iimGetExtract возвращает извлеченный текст.

    Если команде EXTRACT не удалось найти привязку извлечения, то возвращается сообщение

    # EANF # (привязка извлечения не найдена). Если в макросе, который только что был воспроизведен, нет команды EXTRACT, iimGetExtract возвращает пустую строку («»).

    Если в одном макросе появляется несколько команд EXTRACT, результаты разделяются строкой [EXTRACT]. Если полные таблицы извлечены, соседние элементы таблицы разделяются строкой # NEXT #, а концы строк таблицы отделяются строкой # NEWLINE #.

    Работает в: iMacros Browser icon Internet Explorer icon Mozilla Firefox icon Google Chorme icon

    String extract = iimGetExtract ( [int index_of_extracted_text]   )

    Параметры:

    Начиная с версии 6, эта команда поддерживает возможность возвращать извлеченную информацию отдельно, поэтому дальнейший анализ и действия для разделения не требуются:


    iimGetExtract() - возвращает всю извлеченную информацию сразу с к
    каждым элементом, отделенным строкой [EXTRACT]

    iimGetExtract(0) - возвращает всю извлеченную информацию сразу с каждым
    элементом, отделенным строкой [EXTRACT]

    iimGetExtract(1) - возвращает первые извлеченные данные

    iimGetExtract(2) - возвращает 2-ые извлеченные данные (и т.д.)

    Примеры:

    Показать извлеченные даные  (пример скрипта Visual Basic):

    Dim imacros, iret 
    Set imacros = CreateObject("imacros") 
    iret = imacros.iimInit() 
    iret = imacros.iimPlay("myextractmacro") 
    MsgBox "The extract was: "+ vbNewline + _ 
      imacros.iimGetExtract() 
    iret = imacros.iimExit()

    ADD

    Отправлено 25 мая 2020 г., 15:06 пользователем Норрин Радд

     

    [

    обновлено 26 мая 2020 г., 13:59
    ]

    Команда iMacros ADD

    Команда ADD предназначается для добавления значения к переменной (в
    данном случае речь идет о математической операции). Один из способов
    применения в iMacros —  вычитание значения, достигается путем добавления
    отрицательного значения к переменной. Однако, если переменная задана
    как строка, а не числом, то значение не добавляется, а «приклеивается» к
    нужной строке. Команда ADD поддерживает встроенные переменные !VAR1,
    !VAR2, !VAR3 и !EXTRACT.

    Работает в: iMacros Browser icon Internet Explorer icon Mozilla Firefox icon Google Chorme icon

    Синтаксис:

    ADD результирующая_переменная добавляемое_значение

    Параметры:

    • результирующая_переменная
      В качестве данного параметра рекомендуется применять одну из четырех
      встроенных переменных (!VAR1, !VAR2, !VAR3 и !EXTRACT). После выполнения
      команды эта переменная будет содержать конечный результат.
    • добавляемое_значение
      Значение, которое будет добавлено к результирующая_переменная.

    Примеры:

    Если оба значения являются числами, поэтому результатом выполнения
    команды iMacros ADD является число, результат записан в !VAR1:

    SET !VAR1 100 
    ADD !VAR1 -20 
    'Значение !VAR1 = 80

    Если хотя бы одно из значений является строкой, тогда результатом
    работы будет строка:

    SET !VAR1 Hello
    ADD !VAR1 <SP>World<SP>
    'Или ADD !VAR1 " World "
    ADD !VAR1 2015
    'Значение !VAR1 = Hello World 2015

    *

    (<SP> — знак пробела, либо нужно использовать кавычки)

    Извлекаемые данные можно добавить в встроенную переменную !EXTRACT:

    ADD !EXTRACT {{!COL1}}

    BACK

    Отправлено 25 мая 2020 г., 15:04 пользователем Норрин Радд

     

    [

    обновлено 25 мая 2020 г., 19:26
    ]

    Команда iMacros BACK

    Команда iMacros BACK выполняет следующую  функцию, она открывает
    предыдущую посещенную страницу из истории браузера. По сути BACK в
    iMacros заменяет нажатие кнопки Назад в браузере. После выполнения данной команды сайты не сможет определить что Назад вызывает макрос, а не пользователь, кликая мышкой.

    Работает в: iMacros Browser icon Internet Explorer icon Mozilla Firefox icon Google Chorme icon

    Синтаксис:

    BACK

    Пример:

    Макрос сохраняет в переменную !VAR1 текущий URL-адрес страницы, затем
    выполняется команда BACK. На открывшейся странице производятся
    необходимые манипуляции, в конце скрипт возвращается на первоначальную
    страницу, записанную в !VAR1 при помощи команды URL GOTO:

    SET !VAR1 {{!URLCURRENT}}
    BACK
    'другие команды
    URL GOTO={{!VAR1}}

    CLEAR

    Отправлено 25 мая 2020 г., 15:03 пользователем Норрин Радд

     

    [

    обновлено 25 мая 2020 г., 19:47
    ]

    Команда iMacros CLEAR

    Команда CLEAR очищает кэш и удаляет все куки в браузере. Она может быть
    полезна, например, если вам нужно очистить данные сайтов (cookies),
    после её применения , при повторном заходе на сайт, сайт вас не «узнает», вы для него будете
    как новый пользователь.

    Также команда будет полезна если вы хотите при
    помощи iMacros замерить время отклика сайта, так как кэш на это влияет.

    * Надо учитывать, что команда удалит данные всех сайтов, с которыми вы работали.

    Работает в: iMacros Browser icon Internet Explorer icon Mozilla Firefox icon Google Chorme icon

    Синтаксис:

    CLEAR

    Пример:

    Используйте аймакрос команду CLEAR для очитстки кэша браузера, чтобы он не влиял на измерение времени ответа сайта:

    CLEAR
    SET !FILESTOPWATCH mydata.csv
    STOPWATCH ID=total
    URL GOTO=http://www.imacros.org
    STOPWATCH ID=total

    Примечание:

    • Начиная с версии 7.51 в iMacros Browser, CLEAR работает правильно,
      немного изменилось поведение в расширении iMacros для IE. Раньше команда
      выполнялась так же, как в Internet Explorer кнопка Удалить Cookies из пункта меню, а сейчас она работает как в Mozilla Firefox Удаление данных сессии (кэш и всех кук).

    CLICK

    Отправлено 25 мая 2020 г., 15:02 пользователем Норрин Радд

     

    [

    обновлено 25 мая 2020 г., 19:57
    ]

    Команда iMacros CLICK

    «Клик» (нажатие / CLICK) по любому HTML-элементу, по заданным X / Y
    координатам. Начальное положение системы координат находится в левом
    верхнем углу страницы. Ось X положительно направлена вправо, ось Y
    соответственно вниз. Рекомендуется применять данную команду в скриптах iMacros
    только если все прочие способы не работают.

    Для записи командной CLICK установить Recording mod в положение Use X/Y position, для этого зайдите на вкладку Запись или Rec нажмите кнопку Record options.

    Работает в: Mozilla Firefox icon

    Синтаксис:

    CLICK X=n Y=m

    Параметры:

    • X
      Задает значение координаты X (по горизонтали) элемента сайт, на который мы хотим нажать.
    • Y
      Задает значение координаты Y (по вертикали) элемента сайт, на который мы хотим нажать.

    Пример:

    В данном примере при помощи iMacros команды CLICK реализуется выбор яблочного пирога на десерт:

    URL GOTO=http://demo.imacros.net/Automate/TestForm1
    CLICK X=316 Y=453

    Примечание:

    • Команду CLICK часто путают с DS CMD=CLICK, которая предназначена для работы с Flash, Silverlight и другими объектами, однако также она может работать и с HTML.

    DS

    Отправлено 25 мая 2020 г., 15:00 пользователем Норрин Радд

     

    [

    обновлено 25 мая 2020 г., 20:08
    ]

    Команда iMacros DS (DirectScreen)
    Команда DS (DirectScreen) используется, когда остальные
    команды не справляются! Она имитирует обычный «клик» мыши в окне
    браузера. Чтобы активировать данную технологию, необходимо во время
    записи, нажмите на кнопку Click Mode и в появившемся диалоговом окне выберите Use DirectScreen Commands.

    Обычно DS в iMacros
    используется для автоматизации работы с веб-страницами, которые
    содержат не HTML элементы, а «сложные» технологии, такие как Java
    applets, Adobe Flash, Adobe Flex, Microsoft Silverlight или ActiveX
    контроль. Также можно автоматизировать даже самый сложный сайт,
    основанный на AJAX.

    Работает в: iMacros Browser icon Internet Explorer icon

    Flash приложение симуляции калькулятора на картинке ниже.
    iMacros в работе

    Пример сложного (нестандартного) JavaScript — всплывающее диалоговое
    окно, которое лучше автоматизированной с помощью DirectScreen.

    DirectScreen mode

    Запись DirectScreen команды:

    При работе не с HTML технологиями, такими как Flash, Java или
    другими, в стандартном режиме, iMacros не может записать действия. Чтобы
    записать макрос на Flash или Java applet, вы должны активировать
    технологию DirectScreen, для этого необходимо:

    1. Нажмите кнопку Click Mode
      Команда iMacros DS
    2. В открывшемся окне выберите Use Direct Screen Commands …
    3. Теперь можете записывать необходимые действия

    iMacros записывает действия клавиатуры и мыши, записывается много DS и WAIT команд (в зависимости от сложности выполняемых действий). Далее объясняется, почему.

    Как определить координаты?

    Есть несколько способов определения координат для команды DirectScreen:

    1. Абсолютное значение (жесткая привязка к осям):

    DS CMD=MOVETO X=455 Y=224

    2. Центр HTML элемента. Элемент берется с предыдущей команды TAG. Свойство особенно полезно для использования с AJAX элементами.

    DS CMD=MOVETO X={{!TAGX}} Y={{!TAGY}}

    3. Центр изображения, определяется по предыдущей команде IMAGESEARCH.
    Изображение может быть любым, нет ограничения по встроенными HTML
    изображениям.

    DS CMD=MOVETO X={{!IMAGEX}} Y={{!IMAGEY}}

    Почему записалось много WAIT команд?

    Настройки по умолчанию:

    DirectScreen iMacros
    Если вы используете настройки по умолчанию, iMacros
    записывает действия на стандартной скорости, то есть записываются не
    только нажатия, но и как долго вы ждете между действиями (например,
    «выбор элемента», «нажатие левой кнопки мыши», «отпускание левой кнопки
    мыши «, и т. д.). Эти временные интервалы записываются при помощи
    команды WAIT,
    которая записывается iMacros автоматически. Таким образом, applet
    (втроенный скрипт или приложение) имеют достаточно времени, чтобы
    среагировать на ваши действия.

    Если вы заметили, что applet срабатывает быстрее, вы можете
    попробовать сократить время ожидания путем редактирования макроса. Но
    обратите внимание, что applet обычно требуется некоторое время, чтобы
    обновиться. Как альтернатива WAIT
    можно использовать команду IMAGESEARCH, которая сканирует экран
    браузера до того, пока не появится указанное изображение (например,
    изображение кнопки или текст).

    Ввод текста:

    Когда используется режим записи команд iMacros DS, DS также
    записывает ввод текста с помощью команды «DS CMD=KEY». Вы можете
    использовать команду {BACKSPACE}, чтобы перезаписать существующий текст.
    Вот пример:

    VERSION BUILD=6000510     
    TAB T=1     
    TAB CLOSEALLOTHERS     
    URL GOTO=http://imacroshelp.ru/     
    SIZE X=846 Y=612    
    DS CMD=MOVETO X=244 Y=123   
    WAIT SECONDS=0.01    
    DS CMD=LDOWN X=271 Y=79   
    WAIT SECONDS=0.01     
    DS CMD=LUP X=271 Y=79   
    WAIT SECONDS=0.01     
    DS CMD=KEY X=0 Y=0 CONTENT={BACKSPACE}мой<SP>текст

    Синтаксис:

    DS CMD=команда X=координата Y=координата [CONTENT=некоторый_текст]

    Параметры:

    • CMD
      Выполняемая команда/действие

      • Команды:
        1. CLICK
        Ведет себя как обычный «клик». Технически это сочетание команд MOVE, LDOWN, LUP и KEY.
        2. LDBLCLK
        Имитирует двойной щелчок левой кнопкой мыши. При записи с включенной опцией Record all DirectScreen commands, гарантируется правильная последовательность команд при воспроизведении. При использовании Record only mouse clicks LDBLCLK не записывается, но вы можете вручную добавить следующую последовательность команд которая имитирует двойной щелчок: LDOWN, LUP, LDBLCLK, LUP.
        3. LDOWN
        Имитирует нажатие левой кнопки мыши (нажатие и удержание).
        4. LUP
        Отпускание нажатой левой кнопки мыши (логическое продолжение команды LDOWN).
        5. MOVETO
        Перемещение указателя (кнопка нажата)
        6. MDOWN
        Имитация нажатия средней кнопки мыши (нажатие и удержание).
        7. MUP
        Отпускание нажатой средней кнопки мыши (логическое продолжение команды MDOWN).
        8. MDBLCLK
        Двойной щелчок средней кнопкой.
        9. RDOWN
        Имитация нажатия правой кнопки мыши (нажатие и удержание).
        10. RUP
        Отпускание правой кнопки.
        11. RDBLCLK
        Двойной щелчок правой кнопки.
        12. SCREENSHOT (начиная с iMacros v7!)
        Создание скриншота. Эта команда полезна для снятия скриншотов апплетов,
        когда нормальная функция создания скриншот не работает. Путь для
        сохранения скриншотов задается в атрибуте, т.е.

        DS CMD=SCREENSHOT X=380 Y=220 CONTENT=d:datascreen1.bmp

        Координаты X/Y могут быть где угодно, но должны
        быть внутри области, в которой нужно сделать скриншот. Так что, если вам
        нужен скриншот страницы с Java-приложением, координаты должны быть
        где-то внутри этого приложения, в противном случае эта область останется
        черной. Несколько скриншотов могут быть объединены в один с помощью
        команды SCREENSHOTINCLUDE.

      • Действия:
        Ввод текста, нажатие клавиш на клавиатуре. Укажите текст или ключи, чтобы воспользоваться параметром CONTENT. Специальные ключи для команды KEY:
        1. {BACKSPACE}
        Удаляет один символ. Используйте повтор команды {BACKSPACE}, если надо удалить несколько символов или CONTENT=#ERASEALL#, чтобы очистить все поле.
        2. {ENTER}
        Нажатие клавиши Enter.
        Примечание: клавиши-модификаторы {SHIFT}, {CTRL} и
        {ALT} в настоящее время не поддерживается, а также ни {TAB}, ни {ESC},
        ни другие, не упомянутые здесь.
    • CONTENT
      Определяет содержание для отправки выбранного элемента. Укажите CONTENT=#ERASEALL#, чтобы очистить все поле.
      Пример:

      DS CMD=CLICK X=411 Y=434 CONTENT=#ERASEALL#
      DS CMD=KEY X=411 Y=434 CONTENT=#ERASEALL#

    EVAL

    Отправлено 25 мая 2020 г., 14:57 пользователем Норрин Радд

     

    [

    обновлено 25 мая 2020 г., 20:31
    ]

    Команда iMacros EVAL

    Команда EVAL позволяет использовать возможности JavaScript в работе iim макроса. Также команда может быть использована для простого анализа и обработки
    извлеченных данных.

    Чаще
    всего к данной команде обращаются, когда использование встроенного функционала iMacros проще, чем написание кода на js или использование чистого js невозможно, но в целом на JS можно реализовать более сложные проекты.

    Примеры использования:

    • Определить, если дата «старше 40 дней»;
    • Сравнить, например, обменный курс выше/ниже определенного значения;
    • Сделать небольшие преобразования строки. Извлеченный текст
      следующий: «US$33.33», можно удалить «US$» и получить только число перед
      сохранением с помощью SAVEAS TYPE=EXTRACT.

    Работает в: iMacros Browser icon Internet Explorer icon Mozilla Firefox icon Google Chorme icon

    Синтаксис:

    SET !VAR1 EVAL("[JavaScript код]")
    TAG ... CONTENT=EVAL("[JavaScript код]")

    Доступен начиная с iMacros V7.5 и более поздних, дополнение iMacros для Firefox 7.4.0.1 и выше.

    Параметры:

    • Строка в двойных кавычках содержит JavaScript код для выполнения.
    • Функция MacroError (errorMsg). Кроме стандартных JavaScript функций
      (в IE и iMacros Browser, JScript 8.0), команда EVAL имеет встроенную
      функцию вывода ошибок: MacroError(). MacroError принимает значение в
      качестве аргумента и, если выдает ошибку и iMacros error -1340, где
      текст ошибки является аргумент строки errorMsg. Используйте эту функцию,
      если вы хотите условно остановить макрос, как это делается в примере 3
      ниже.

    Примечания:

    • Необходимо явно вернуть окончательное значение, объявив его в конце JavaScript.
      Правильно:

      SET myVal EVAL("var x = 1; x;")
      'myVal = 1

      Неправильно:

      SET myVal EVAL("var x = 1;")
      'myVal = null
    • Можно вызвать специальную функцию MacroError (errorMsg) в Javascript, чтобы cгенерировать iMacros ошибку.
    • В спец символах нужно дублировать обратный слеш, например, d правильно записать \d.
    • Двойные кавычки должны быть экранированы, внешние кавычки не экранируются, так как содержат в себе Javascript код.
    • EVAL в iMacros Browser и плагине для IE использует Microsoft’s
      JScript 8.0 JScript .NET, framework version 3.5), есть ограничения
      безопасности. Как следствие, методы DOM/GUI как «compatMode()» или
      «alert()» не доступны. Для DOM/GUI доступа можно использовать URL GOTO с Javascript кодом (возможно данная проблема уже исправлена разработчиками).
    • iMacros для Firefox’s EVAL использует javascript встроенный в Firefox.

    Примеры:

    1. Случайное время задержки. Подождать случайно выбранное время (от 1 до 10 секунд), после загрузки страницы:

    SET !VAR1 EVAL("var randomNumber=Math.floor(Math.random()*10 + 1); randomNumber;")
    URL GOTO=http://imacroshelp.ru
    ' ждать от 1 до 10 секунд
    WAIT SECONDS={{!VAR1}}

    2. Сгенерировать случайное число в определенном диапазона:

    SET randomNumber EVAL("var min = 50; var max = 100; var randomNumber = Math.floor(Math.random() * (max - min + 1)) + min; randomNumber;")

    3. Получение и сравнение валют. Сохранить результат.

    Сохранить EUR-ставку в долларах USD, только если она выше
    определенного порога (1.3 USD). Если ставка ниже, остановить макрос и
    выдать сообщение об ошибке:

    URL GOTO=http://www.xe.com/ucc/convert/?Amount=1&From=EUR&To=USD
    SET !EXTRACT_TEST_POPUP NO
    TAG POS=1 TYPE=TD ATTR=TXT:*<SP>USD&&WIDTH:46%&&ALIGN:left EXTRACT=TXT
    SET !VAR1 EVAL("var s = "{{!EXTRACT}}"; s.replace("USD",""); var d = parseFloat(s); if(d < 1.3){MacroError("Euro меньше 1.3 USD.");} else {d};")
    SET !EXTRACT NULL
    SET !EXTRACT {{!VAR1}}
    SAVEAS TYPE=EXTRACT FOLDER=* FILE=EuroRate.csv

    4. Получение и сравнение даты/времени.

    Проверить: последнее сообщение старше нескольких часов (12 часов):

    CLEAR
    URL GOTO=http://www.readwriteweb.com/
    SET !EXTRACT_TEST_POPUP NO
    TAG POS=1 TYPE=DIV ATTR=CLASS:submeta EXTRACT=TXT
    SET !VAR1 EVAL("var h = 12; var s = "{{!EXTRACT}}"; var re = /\w+\s\d{1,2},\s\d{4}\s+\d{1,2}\:\d{2}\s[A|P]M/; var postDateStr = re.exec(s); var today = new Date(); var postAge = today.getTime() - Date.parse(postDateStr); var hInMilli = h*60*60*1000; if(postAge > hInMilli){MacroError("Сообщение старше 12 часов");}")
    

    5. Получить вчерашнюю дату.

    Ввести текст с вчерашней датой в ISO-формате (гггг-мм-дд), месяц
    меняется, високосный год, и так далее. Для сегодняшней даты можно
    использовать команду !NOW, но ее не получится преобразовать чтобы получить вчерашнее число, EVAL решает эту проблему:

    ... CONTENT=EVAL("var d = new Date(); d.setDate(d.getDate() - 1); var year = d.getFullYear(); var month = d.getMonth() + 1; var day = d.getDate(); year + '-' + month + '-' + day;")
    

    6. Получить завтрашнюю дату.

    Создайте переменную с завтрашней датой в формате дд/мм/гггг:

    SET tomorrow EVAL("var today = new Date(); var tomorrow = new Date(); tomorrow.setDate(today.getDate() + 1); var day = tomorrow.getDate().toString(); if (day.length < 2) {day = "0" + day;} var month = (tomorrow.getMonth() + 1).toString(); if (month.length < 2) {month = "0" + month;} var year = tomorrow.getFullYear().toString(); var dateString = day + "/" + month + "/" + year; dateString;")
    PROMPT {{tomorrow}}

    7. Редактировать извлеченный текст.

    Преобразование текста в строку верхнего регистра:

    VERSION BUILD=7400919 RECORDER=FX
    TAB T=1
    URL GOTO=http://android-developers.blogspot.com/2011/09/preparing-for-handsets.html
    SET !EXTRACT_TEST_POPUP NO
    TAG POS=1 TYPE=P ATTR=TXT:Early<SP>this<SP>year,* EXTRACT=TXT
    SET !VAR1 EVAL("var s="{{!EXTRACT}}"; s.toUpperCase()")
    PROMPT {{!VAR1}}

    Удалить первые и последние пробелы:

    SET !EXTRACT "    Эта строка имеет в начале и в конце пробелы     "
    ' Отображается значение в кавычках со всеми пробелами
    PROMPT {{!EXTRACT}}
    SET trimmedValue EVAL(""{{!EXTRACT}}".replace(/^\s*|\s*$/g, "");")
    PROMPT "{{trimmedValue}} - без пробелов!"

    8. DemoEval.iim:

    URL GOTO=http://www.iopus.com/imacros/demo/v7/eval.htm
    SET !VAR1 EVAL("Math.floor(Math.random()*5 + 1);")
    WAIT SECONDS={{!VAR1}}
    SET !EXTRACT_TEST_POPUP NO
    TAG POS=1 TYPE=B ATTR=TXT:* EXTRACT=TXT
    SET !VAR2 EVAL("var h = 20; var s = "{{!EXTRACT}}"; var today = new Date(); var postAge = today.getTime() - Date.parse(s); var hInMilli = h*60*60*1000; if(postAge > hInMilli){MacroError("Разница во времени более 20 часов");}else null")
    SET !EXTRACT NULL
    TAG POS=1 TYPE=INPUT:TEXT FORM=ID:form1 ATTR=NAME:textfield EXTRACT=TXT
    SET !VAR2 EVAL("var s="{{!EXTRACT}}"; var d = parseFloat(s); if((d > 99)&&(d < 101))d; else MacroError("Значение не в заданных пределах");")

    EVENT

    Отправлено 25 мая 2020 г., 14:53 пользователем Норрин Радд

     

    [

    обновлено 25 мая 2020 г., 20:38
    ]

    Команда iMacros EVENT

    Команда EVENT  — это новая команда для автоматизации
    управления веб-элементами, с которыми не может справиться классический TAG.  Рассмотрим, с чем данная команда может нам помочь:

    • Drag & Drop;
    • Перетаскивание ползунка;
    • Не стандартный выбор даты;
    • Динамическая drop — down область.

    В частности, EVENT справляется с написанием комментариев на VK.com, в то время, как TAG там бесполезен.

    Для активации режима записи эвентов, нажмите Record, затем в блоке Recording mode смените радио-баттон на Experimental event recording mode.

    Работает в: iMacros Browser icon Internet Explorer icon Mozilla Firefox icon Google Chorme icon

    Синтаксис:

    EVENT TYPE=тип [SELECTOR|XPATH]=местоположение [BUTTON|POINT|CHAR|KEY] = [кнопка|точка|символ|кнопка] [MODIFIERS=модификатор]
    

    Параметры:

    • TYPE
      Тип события для выполнения команды. Допускаются следующие типы:

      1. События мыши:
        • MOUSEDOWN — нажать кнопку мыши над элементом;
        • MOUSEMOVE — движение мыши над элементом;
        • MOUSEUP — кнопка мыши отпущена над элементом;
        • CLICK — клик по элементу (CLICK = MOUSEDOWN + MOUSEUP);
        • DBLCLICK — двойкное нажатие.
      2. События клавиатуры:
        • KEYDOWN — нажатие клавиши клавиатуры;
        • KEYUP — отпускание клавиши клавиатуры;
        • KEYPRESS — данное событие возникает сразу после KEYDOWN (в повседневной жизни при нажатии на любую клавишу на клавиатуре, происходят следующие действия: KEYDOWN -> KEYPRESS -> KEYUP, на русском примерно так: нажать -> нажата -> отпустить).
    • SELECTOR или XPATH
      В данном пункте необходимо локализовать элемент, над которым будем
      производить манипуляции, на странице. Это может быть как XPATH, так и
      CSS-селектор.
    • BUTTON, POINT, CHAR, или KEY
      Выбор какого либо элемента зависит от того, какой тип (TYPE) события используется. Событиям мыши необходимы BUTTON (кнопка на странице) или POINT (точка/координаты на странице). События клавиатуры: CHAR (символ) или KEY (номер клавиша на клавиатуре).

      MOUSEDOWN, CLICK и DBLCLICK нужна BUTTON (0 — по умолчанию или левая кнопка мыши, 1 — средняя кнопка мыши, 2 — вторая или правая кнопка мыши).
      MOUSEUP и MOUSEMOVE используют POINT вида «(245,186)».
      KEYDOWN, KEYUP и KEYPRESS используют CHAR (печатаемые символы, вида «п» или «Q») или KEY (непечатаемые клавиши клавиатуры, как пример стрелка вверх, вида KEY=40).

    • MODIFIER
      Комбинации CTRL, ALT, SHIFT, META. Клавиши держутся нажатыми во время
      событий мыши. Несколько модификаторов разделяются при помощи запятой,
      т.е. MODIFIERS=»ctrl,shift».

    Примечание:

    События клавиатуры которые используют KEY поддерживаются только в дополнении iMacros для Firefox.
    EVENTS сборники собирают EVENT команды одного и того же типа и на одном
    целевом элементе, поэтому при перемещении мыши по пути записывается
    всего одна команда EVENTS, где точки, определяющие путь даны в виде
    списка: POINTS=»(27,154),(26,154),(25,154)».

    Примеры:

    URL GOTO=http://demo.imacros.net/TestPages/ForceDirectedGraph.aspx
    FRAME NAME=iframeFDgraph
    EVENT TYPE=MOUSEDOWN SELECTOR="HTML>BODY>svg>g:nth-of-type(10)>circle" BUTTON=0
    EVENTS TYPE=MOUSEMOVE SELECTOR="HTML>BODY>svg>g:nth-of-type(10)>circle" POINTS="(559,222),(558,222),(557,222),(555,223), (554,224),(551,224)"
    EVENTS TYPE=MOUSEMOVE SELECTOR="HTML>BODY>svg" POINTS="(546,227),(536,232),(534,234),(523,243),(515,255),(512,259),(510,263),(500,282),(499,285),(493,300),(492,304),(492,306),(488,321),(487,323),(487,324),(487,326),(486,327),(483,336)"
    EVENTS TYPE=MOUSEMOVE SELECTOR="HTML>BODY>svg>line:nth-of-type(4)" POINTS="(481,338),(481,339)"
    EVENTS TYPE=MOUSEMOVE SELECTOR="HTML>BODY>svg" POINTS="(480,340),(479,342),(475,347),(475,348)"
    EVENT TYPE=MOUSEMOVE SELECTOR="HTML>BODY>svg>g:nth-of-type(10)>circle" POINT="(474,350)"
    EVENT TYPE=MOUSEMOVE SELECTOR="HTML>BODY>svg" POINT="(473,351)"
    EVENTS TYPE=MOUSEMOVE SELECTOR="HTML>BODY>svg>g:nth-of-type(10)>circle" POINTS="(472,353),(470,355),(469,357),(468,359),(467,360),(466,360)"
    EVENT TYPE=MOUSEUP SELECTOR="HTML>BODY>svg>g:nth-of-type(10)>circle" POINT="(466,360)"

    Используйте команду CLEAR, чтобы локальные данные в кэше не повлияли на измерение времени отклика веб-сайта:

     URL GOTO=https://moqups.com/#!/
     EVENT TYPE=MOUSEDOWN SELECTOR="#preview-svg>svg>svg>svg>foreignObject>DIV" BUTTON=0
     EVENTS TYPE=MOUSEMOVE SELECTOR="#preview-svg>svg>svg>svg>foreignObject>DIV" POINTS="(131,254),(132,254),(134,254),(136,255),(139,256),(142,256),(147,256),(153,257),(160,257),(169,258),(190,258)"
     EVENT TYPE=MOUSEMOVE SELECTOR="#containment" POINT="(204,257)"
     EVENT TYPE=MOUSEUP POINT="(386,254)"

    EXTRACT

    Отправлено 25 мая 2020 г., 14:50 пользователем Норрин Радд

     

    [

    обновлено 30 авг. 2020 г., 17:20
    ]

    Параметр iMacros EXTRACT

    Параметр EXTRACT является частью команды TAG. Основной функцией данного параметра является извлечение данных из сайта. Используйте атрибут ATTR
    для определения той части, которую необходимо извлечь. Обычно эта часть
    генерируется с помощью мастера извлечения (Extraction Wizard). Параметр
    EXTRACT ищет исходный HTML код веб-сайта для н-го появления ATTR и извлекает его. ATTR всегда должен заканчиваться шаблонизатором (*).

    Если несколько команд с EXTRACT выполняются в одном макросе, то
    результаты отделяются друг от друга строкой «[EXTRACT]». При сохранении
    извлеченных данных («SAVEAS TYPE=EXTRACT») эта строка автоматически заменяется на перевод на новую строку.

    Если извлекается таблица целиком, то соседние ячейки таблиц
    отделяются друг от друга строкой «#NEXT#», а строки таблицы разделяются
    строкой «#NEWLINE#». Эти спец-теги автоматически заменяются запятой и
    переводом строки соответственно, когда вы используете команду «SAVEAS
    TYPE=EXTRACT», но разделители сохраняются при возврате данных в скрипт
    через вызов функции iimGetLastExtract(). Если извлекаемая таблица
    содержит вложенные таблицы, то данные внутренней таблицы также будут
    разделены «#NEXT#» и «#NEWLINE#» .

    Работает в: iMacros Browser icon Internet Explorer icon Mozilla Firefox icon Google Chorme icon

    Синтаксис:

    TAG ... EXTRACT=значение

    Значение параметра EXTRACT команды TAG:

    • TXT
      Обычное извлечение текста, содержит все внутренние HTML-теги, если они есть.
      При использовании раскрывающегося (drop-down) списка (выберите элемент), извлекается выбранная (видимая) запись.
    • TXTALL
      Для использования с раскрывающимся списком (выберите элемент), извлекаются все записи из списка.
    • HTM
      Извлекается HTML-код выбранного элемента. Примечание: В iMacros Browser и
      IE HTML-теги всегда возвращаются в верхнем регистре. Таким образом,
      «<b>Тест</b>» извлекается как «<B>Тест</B>».
    • HREF
      URL-ссылка выбранного элемента.
    • ALT
      Альтернативный текст выбранного изображения.
    • TITLE
      Title атрибут элемента, например текст всплывающей подсказки.
    • CHECKED
      Состояние флажка (checkbox) или радиокнопки (radiobutton). Возвращает
      «true», когда флажок установлен, в противном случае «false».

    Примечание: при извлечении текста из поля ввода (команда TAG содержит «TYPE=INPUT»), не должно быть параметра CONTENT.

    Извлечение нестандартных атрибутов:

    В новых версиях iMacros for Firefox и iMacros Browser, вы можете извлечь любой атрибут. Если вы хотите знать, какие атрибуты доступны, записывайте команду TAG в экспертном режиме.

    Примеры:

    Как правило, всплывающие подсказки определяется атрибутом TITLE элемента. Вы можете извлечь содержимое всплывающей подсказки с помощью EXTRACT iMacros:

    TAG POS=3 TYPE=TD ATTR=TXT:* EXTRACT=TITLE

    qTip подсказка в JavaScript фреймворке JQuery  используется не
    стандартный «title», а дополнительный атрибут с названием «data-qtip»:

    TAG POS=1 TYPE=TD ATTR=data-qtip:ComputerName=* EXTRACT=data-qtip

    ComputerName=* — начальная неизменная часть подсказки и используется
    для определения всплывающей подсказки которая должна быть извлечена.
    Запись в Expert Mode создаст команду TAG, которая состоит из всех атрибутов щелкнутого (выбранного) HTML-элемента.

    FILEDELETE

    Отправлено 25 мая 2020 г., 11:19 пользователем Норрин Радд

     

    [

    обновлено 25 мая 2020 г., 20:50
    ]

    Команда iMacros FILEDELETE

    Команда FILEDELETE удаляет файл с заданным именем. Если в
    имени не указан каталог, предполагается что файл лежит в стандартном
    каталоге iMacros Downloads (по умолчанию: iMacrosDownloads). Можно задать абсолютный путь к файлу
    лежащему в другой папке.

    Работает в: iMacros Browser icon Internet Explorer icon Mozilla Firefox icon 

    Синтаксис:

    FILEDELETE NAME=название_файла

    Параметры:

    • NAME
      Название файла или путь к файлу который будет удален.

    Примечания:

    • В iMacros Browser и Internet Explorer, указывается путь относительно папки загрузки (например, ExtractsmyTable.csv).
    • Название файла может быть задано в двойных кавычках (если есть
      пробелы в пути, например). В этом случае, обратные слешы должны быть
      экранированы от другого обратного слеша (так, «C:\Мои
      документы\temp.txt»).
    • Если двойные кавычки не используются, а в названии есть пробелы, то они должны быть заменены символами: <SP>

    Пример:

    Примар правильного задания файлов, в пути которых есть названия папок с пробелами (в данном случае есть папка «data folder»):

    FILEDELETE NAME=d:data<SP>folderfile.csv
    FILEDELETE NAME="d:\data folder\file.csv"

    Рассмотрим случай, когда макрос извлекает данные из веб-страницы и
    сохраняет их в том же файле. Обычно новые данные добавляются к
    существующим файлам. Если вы хотите, чтобы файл содержал последние
    полученные данные, нужно удалить файл перед сохранением.

    Понравилась статья? Поделить с друзьями:
  • Iis код ошибки 0x8007000d
  • Imac ошибка 102
  • Ima honda insight ошибка
  • Iis как изменить 80 порт
  • Ima error communicating to tpm chip