2015-11-20 3 views
0

Я новичок в iMacro, поэтому, пожалуйста, исправьте меня, если мой подход с iMacro неверен.Как определить/существующую функцию javascript в iMacro

Я создал некоторые функции javascript, которые полезны при тестировании определенных условий на DOM. Проблема в том, что я не могу включить javascript-функции (из внешнего js-файла, а также определение в .js-скрипте imacro) в свой тестовый файл и вызвать функции из js lib во время выполнения тестового примера.

ответ

0

Вы пробовали использовать iimGetLastExtract()

Вы можете создать файл .js, который вызывает imacros. эти макросы могут извлекать необходимую информацию из DOM. используя iimGetLastExtract(), вы можете извлечь эти значения и проверить их в js

Когда вы находитесь в FF, вы можете фактически выбрать файл .js для запуска из меню imacros.

Вот пример старого .js-файла, который я использовал, чтобы делать именно такую ​​вещь. im, зацикливая на значения динамически созданного выпадающего списка и делая вещи на основе его значения. (Если макрос не удается, то будет значение меньше 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++; 
} 

Если вы Арент знакомы с некоторыми из вещей, которые там. im, используя 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, выбрать example.js из меню imacros (f8, чтобы открыть меню) и нажать кнопку воспроизведения (или просто дважды щелкнуть example.js)

макрос найдет i- й позиции с классом, содержащим «count-count-post» и вернуть текст этого диапазона. i - параметр, который передается js. мы начнем с i = 2, поэтому второй диапазон голосов (мы пропускаем голосование за вопрос и подсчитываем только голоса за ответы). js будет продолжать вызывать getVotes.iim до тех пор, пока getVotes не вернет значение извлечения «# EANF #», которое является возвращаемым значением, когда макрос не может найти указанный тег (т. е. когда на текущей странице нет голосов). # EANF # вышвырнет нас из нашего цикла, а затем вы получите предупреждение с некоторой базовой математикой по подсчитанным нами голосам.

Экстрагирующих голосов здесь довольно глупо, но я просто демонстрирую простой пример того, как использовать imacros ЭКСТРАКТ в JS

+0

Спасибо за ваш ответ, вы можете предоставить образец рабочего код, как вы используете внешними такие файлы, как 'selectBoard.iim' и т. д. Я не могу получить этот процесс. – Mayank

+0

Я отредактировал свой ответ, чтобы включить полный .js и .iim файл для использования в качестве основного примера. Вы можете создать эти файлы в своей папке imacros и вставить в них вышеуказанный код, чтобы увидеть пример в действии. Скорее всего, вам понадобятся более сложные тесты и теги, но, надеюсь, это может помочь вам начать –

Смежные вопросы