我是iMacro的新手,所以如果我的iMacro方法不正確,請糾正我。如何在iMacro中定義/現有的javascript功能
我創建了一些有助於測試DOM上某些條件的JavaScript函數。問題是我不能在測試文件中包含JavaScript函數(從外部js文件以及在.js腳本中定義的iMacro)並在測試用例執行過程中從js lib中調用函數。
我是iMacro的新手,所以如果我的iMacro方法不正確,請糾正我。如何在iMacro中定義/現有的javascript功能
我創建了一些有助於測試DOM上某些條件的JavaScript函數。問題是我不能在測試文件中包含JavaScript函數(從外部js文件以及在.js腳本中定義的iMacro)並在測試用例執行過程中從js lib中調用函數。
您是否嘗試過使用iimGetLastExtract()
您可以創建一個調用iMacros的.js文件。這些宏可以從DOM中提取所需的信息。使用iimGetLastExtract(),您可以提取這些值並在js中測試它,當您處於FF中時,您實際上可以選擇一個.js文件以從imacros菜單運行。
下面是一箇舊的.js文件的例子,我曾經這樣做過。即時通訊循環動態創建的下拉列表的值,並根據其值進行操作。 (如果宏失敗,它會值小於0:error codes)
var i = 1;
var notDone = 1;
while(notDone > 0) {
//select the board from available
iimSet('name', boardname);
iimPlay('selectBoard.iim');
//pick the next display view and capture the view name
iimSet('index',i);
notDone = iimPlay('assignDisplay.iim');
var displayName = iimGetLastExtract(1),
inputName = iimGetLastExtract(2),
label = '';
if((displayName == '[None]' && displayName == '[None]') || !notDone) {
break;
}
label = (displayName === '[None]') ? inputName : displayName;
if(prefix) label = prefix + label;
if(suffix) label += suffix;
iimSet('name', label);
iimSet('btn',btn);
iimPlay('assignLabelInput.iim');
i++;
}
如果你的arent在那裏與一些熟悉的東西。即時通訊使用iimSet()在imacros中設置變量。 iimPlay播放該宏。而在宏本身,這裏是提取信息
TAG POS=1 TYPE=SELECT FORM=NAME:form1 ATTR=ID:dropdownid EXTRACT=TXT
編輯 這是一個愚蠢的例子,希望能表現出使用JS和iMacros的提取功能 代碼示例
example.js
var allAnswerVotes=[];
var runningTotal = 0;
var working = true;
var i = 2;
while(working) {
iimSet('i', i);
iimPlay('getVotes.iim');
var extract = iimGetLastExtract(1);
if(extract === '#EANF#') {
working = false;
continue; //hault this iteration;
}
var numVotes = parseInt(extract, 10);
allAnswerVotes.push(numVotes);
runningTotal += numVotes;
i++; //increment i to get the next vote
}
alert('The highest vote is '+ Math.max.apply(null, allAnswerVotes)+', with an average of '+ Math.ceil(runningTotal/allAnswerVotes.length));
getVotes.iim
TAG POS={{i}} TYPE=SPAN ATTR=class:*vote-count-post* EXTRACT=TXT
解釋
首先要做的就是確保這兩個文件(example.js,getVotes.iim)位於同一文件夾中,以便example.js到正確運行getVotes.iim。 接下來,您只需導航到任何StackOverflow線程,從imacros菜單(f8打開菜單)中選擇example.js並按下play(或者直接雙擊example.js)
宏將找到i- th位置與包含「vote-count-post」的類進行跨度並返回該跨度的文本。我是由js傳入的參數。我們將從i = 2開始,所以第二次投票(我們跳過對該問題的投票並且只計算答案的投票)。 js將繼續調用getVotes.iim,直到getVotes返回一個提取值「#EANF#」,該值是宏無法找到指定標籤時(即當前頁面上沒有投票時)的返回值。 #EANF#會把我們踢出我們的圈子,然後你會得到一些關於我們計票的基本數學的警報。
票的提取這裏是非常愚蠢的,但我只是演示瞭如何使用iMacros的提取JS
感謝您的回覆,你可以提供一個樣本的工作代碼,您使用外部一個基本的例子像'selectBoard.iim'等文件,我無法得到這個過程。 – Mayank
我編輯了我的答案,以包含一個完整的.js和.iim文件作爲基本示例。您可以在您的imacros文件夾中創建這些文件,並將上面的代碼粘貼到它們中以查看實例中的示例。你很可能需要更復雜的測試和標籤聲明,但希望這可以讓你開始 –