I've wrapped the macro in a Perl "for" loop, reading from the same file. But whenever it runs, I see iMacros enter "__ undefined __" into the form fields.
At the same time, Perl generates this warning:
Code: Select all
Win32::OLE(0.1709) error 0x80020003: "Member not found" in PROPERTYPUT "Visible" at imacro.pl line 6, <DATA> line 68
Code: Select all
#!/usr/bin/perl -w
#use strict;
use Win32::OLE;
$b = Win32::OLE->new('imacros') or die "Iopus could not be started by Win32:OLE\n";
$b->{Visible} = 1;
$b->iimInit("-fx");
# Calling a macro
my $macro = "ae_robot_PERL.iim";
open(DATA,"../Documents/iMacros/Datasources/accounts.csv") or die $!;
for (my $n = 1; my $line = <DATA>; $n++){
chomp($line);
next unless $n >= 68;
my ($client,$account,$ae,$userid) = split(m/,(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/,$line);
#$b->iimSet("-loop",$n);
$b->iimSet("-var_client",$client);
$b->iimSet("-var_account",$account);
$b->iimSet("-var_ae",$ae);
$b->iimSet("-var_userid",$userid);
$b->iimPlay($macro);
&err ($n,$client,$account,$ae,$userid,$macro);
# FOR TESTING PURPOSES ONLY
if ($n == 68){
$b->iimExit();
die;
}
}
$b->iimExit();
########################################################################
# Get the last message reported from Iopus upon macro completion status#
########################################################################
sub err {
my $responsecode = $b->iimGetLastError();
my ($n,$client,$account,$ae,$userid,$macro) = @_;
open (LOG,">>./imacrolog.csv") or die $!;
if ($responsecode =~ /completed/) {
print("Success, line $n, Message:$responsecode\n");
print LOG "SUCCESS, line $n,$client,$account,$ae,$userid";
} else {
print("Failure, line $n, Message:$responsecode\n");
print LOG "FAIL, line $n,$client,$account,$ae,$userid";
}
close LOG;
}
Code: Select all
VERSION BUILD=6111228 RECORDER=FX
TAB T=1
SET !REPLAYSPEED Fast
URL GOTO=https://urlredacted.com/
TAG POS=1 TYPE=DIV ATTR=ID:ctl00_header_mnuMainMenu_mnuAccounts
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:aspnetForm ATTR=ID:ctl00_main_cgAccountInfo_filterInput CONTENT={{client}}
TAG POS=1 TYPE=INPUT:BUTTON FORM=ID:aspnetForm ATTR=ID:ctl00_main_cgAccountInfo_filterGo
TAG POS=1 TYPE=SPAN ATTR=ID:ctl00_main_cgAccountInfo_r_*_c_ServiceLevelID_label&&TXT:Premium
TAG POS=R-1 TYPE=SPAN ATTR=TXT:{{client}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:aspnetForm ATTR=ID:ctl00_main_cgAccountInfo_filterInput CONTENT={{account}}
TAG POS=1 TYPE=INPUT:BUTTON FORM=ID:aspnetForm ATTR=ID:ctl00_main_cgAccountInfo_filterGo
WAIT SECONDS=1
TAG POS=1 TYPE=SPAN ATTR=TXT:{{account}}
TAG POS=1 TYPE=DIV ATTR=ID:ctl00_main_mnuAccountManagement_mnuMenu_mnuEnterpriseAccountUsers
TAG POS=1 TYPE=SELECT FORM=NAME:aspnetForm ATTR=ID:ctl00_main_lstAvailableUsers CONTENT=%{{userid}}
TAG POS=1 TYPE=INPUT:BUTTON FORM=ID:aspnetForm ATTR=ID:ctl00_main_btnAdd
TAG POS=1 TYPE=SELECT FORM=NAME:aspnetForm ATTR=ID:ctl00_main_lstSelectedUsers CONTENT=%{{userid}}
TAG POS=1 TYPE=SELECT FORM=NAME:aspnetForm ATTR=ID:ctl00_main_dlResponsibility CONTENT=%1
TAG POS=1 TYPE=INPUT:CHECKBOX FORM=NAME:aspnetForm ATTR=ID:btnPrimaryAE CONTENT=YES
TAG POS=1 TYPE=INPUT:BUTTON FORM=ID:aspnetForm ATTR=ID:ctl00_main_btnSave
WAIT SECONDS=3
CLICK X=213 Y=240
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:aspnetForm ATTR=ID:{{ae}} CONTENT=100
TAG POS=1 TYPE=SELECT ATTR=ID:ctl00_main_CalendarEffectiveDate_months CONTENT=%11
TAG POS=1 TYPE=SELECT ATTR=ID:ctl00_main_CalendarEffectiveDate_years CONTENT=%2008
TAG POS=1 TYPE=SPAN ATTR=ID:ctl00_main_CalendarEffectiveDate_span_27
TAG POS=1 TYPE=INPUT:BUTTON FORM=ID:aspnetForm ATTR=ID:ctl00_main_btnInsert
TAG POS=1 TYPE=DIV ATTR=ID:ctl00_header_mnuBreadCrumb_mnuCustomer
WAIT SECONDS=2
TAG POS=1 TYPE=DIV ATTR=ID:ctl00_header_mnuBreadCrumb_mnuCustomer