Imacros / Java需要一个检查元素是否存在的解决方案。如果是,则提取并匹配,如果没有,则继续

时间:2016-11-25 17:41:05

标签: javascript firefox bots imacros

我刚加入这里,如果我看起来有点慢,我还在学习imacros和java,所以道歉!我目前在imacros中有这个代码来检查元素是否有某个值,然后在java中做变通办法:

TAG POS=1 TYPE=P ATTR=TXT:* EXTRACT=TXT
SET !VAR2 EVAL("var s=\"{{!EXTRACT}}\"; if(s.match(\"error\")){url=\"imacros://run/?m=#Current.js\";} else url=\"imacros://run/?m=#Current2.iim\"; url;")
URL GOTO={{!VAR2}}

我知道它没有经过精心优化但却有效。但这是新问题。我需要在另一个不存在的元素上再做一次。那我该怎么办呢?这是相关的imacros线......

TAG POS=1 TYPE=SPAN ATTR=TXT:Click

所以是的,我需要提取它并像第一个例子那样进行比较,但就像我说的那样,它只有大约20-30%的时间。因此需要检查它是否存在,如果确实存在,则运行if else,如果不存在则继续正常继续。

先谢谢你们!

如果在第一个例子中有一种更有效的处理方式,那么这也会很棒,因为我知道它的臃肿,并使FF占用更多内存

是的,我已经搜索并看到了这个:

Check if html element exists with iMacros and javascript

和此:

Check if element exists in jQuery

但我仍然感到困惑和不知所措,因为我对js很新......

1 个答案:

答案 0 :(得分:0)

首先,您应该阅读有关JavaScript Scripting Interface in 'iMacros for Firefox'的维基信息。
然后在默认的“Demo-Firefox”文件夹中查看js-scripts。

为了更好地理解这个原则,以下是您的第一个代码的样子:

iimPlayCode("TAG POS=1 TYPE=P ATTR=TXT:* EXTRACT=TXT");

var s = iimGetExtract();
if (s.match("error")) {
    // not good idea to run 'js' from 'js' scripts
    iimPlayCode("URL GOTO=imacros://run/?m=#Current.js");
} else {
    // it's alright here
    iimPlay("#Current2.iim");
}