如何在iMacro中定义/现有javascript函数
How to define / existing javascript function in iMacro
我是iMacro的新手,所以如果我使用iMacro时的方法不正确,请纠正我。
我创建了一些javascript函数,这些函数有助于测试DOM上的某些条件。问题是,在测试用例执行期间,我无法将javascript函数(来自External js文件以及在imacro的.js脚本上定义)包含到我的测试文件中,也无法从js lib调用函数。
您是否尝试过使用iimGetLastExtract()
您可以创建一个调用imacros的.js文件。这些宏可以从DOM中提取所需的信息。使用iimGetLastExtract(),您可以提取这些值并在js 中进行测试
当您在FF中时,您实际上可以从imacros菜单中选择一个.js文件来运行。
下面是一个旧的.js文件的例子,我曾经做过这样的事情。im循环遍历动态创建的下拉列表的值,并根据其值执行操作。(如果宏失败,其值将小于0:错误代码)
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.im
TAG POS={{i}} TYPE=SPAN ATTR=class:*vote-count-post* EXTRACT=TXT
的解释
首先要做的是确保这两个文件(example.js,getVotes.im)位于同一文件夹中,以便example.js正确运行getVotes.iim。接下来,你只需要导航到任何StackOverflow线程,从imacros菜单中选择example.js(f8打开菜单),然后按下播放(或者双击example.js)
宏将找到第i个位置跨度,其中类包含"投票计数帖子",并返回该跨度的文本。i是一个由js传入的参数。我们将从i=2开始,所以第二次投票是跨度(我们跳过问题的投票,只计算答案的投票)。js将继续调用getVotes.im,直到getVotes返回一个提取值"#EANF#",这是当宏找不到指定标签时(即当当前页面上没有投票时)的返回值#EANF#会把我们踢出我们的循环,然后你会得到关于我们统计的选票的一些基本数学信息。
这里的选票提取非常愚蠢,但我只是在演示如何在js 中使用imacros EXTRACT的一个基本示例
- 您可以使用JavaScript和Firefox扩展来更改现有页面吗
- Javascript,将文本添加到具有现有文本节点的元素中
- 在Javascript中计算并显示具有2个税收百分比的现有总值
- JavaScript运行时事件循环现有技术
- 为现有Roslyn语言lexer/parser选择基于javascript的代码编辑器
- JavaScript:如果现有对象被实例化为具有特定值,如何创建警报
- Javascript重新定义和覆盖现有的函数体
- 如何在不向现有JavaScript函数添加代码的情况下向该函数添加回调函数
- 现有 JavaScript 照片库的图像淡入淡出效果
- 提取现有 JavaScript 文件中数组的值
- 如何“;添加“;现有JavaScript编程游戏的并发性
- 用try-catch包装现有javascript对象的所有方法
- Yammer Embed从2014年9月30日开始打破现有JavaScript
- 如何在iMacro中定义/现有javascript函数
- 现有javascript未执行MVC 5 Telerik
- 将许多键/值对添加到现有JavaScript对象的快捷方式
- 为现有javascript设置附加规则
- 向现有Javascript对象添加方法的最佳方式
- 是否有可能在不修改原始代码的情况下向现有javascript函数添加一些代码?
- 拥有平滑滚动到 id 的现有 JavaScript,希望帮助为特定 id 添加例外