2015-11-20 64 views
0

我是iMacro的新手,所以如果我的iMacro方法不正確,請糾正我。如何在iMacro中定義/現有的javascript功能

我創建了一些有助於測試DOM上某些條件的JavaScript函數。問題是我不能在測試文件中包含JavaScript函數(從外部js文件以及在.js腳本中定義的iMacro)並在測試用例執行過程中從js lib中調用函數。

回答

0

您是否嘗試過使用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

+0

感謝您的回覆,你可以提供一個樣本的工作代碼,您使用外部一個基本的例子像'selectBoard.iim'等文件,我無法得到這個過程。 – Mayank

+0

我編輯了我的答案,以包含一個完整的.js和.iim文件作爲基本示例。您可以在您的imacros文件夾中創建這些文件,並將上面的代碼粘貼到它們中以查看實例中的示例。你很可能需要更復雜的測試和標籤聲明,但希望這可以讓你開始 –