【问题标题】:Imacros/Java Need a solution for checking if element exists. If so , then to extract and match , and if not , then to continueImacros/Java 需要一个检查元素是否存在的解决方案。如果是,则提取并匹配,如果不是,则继续
【发布时间】:2016-11-25 17:41:04
【问题描述】:

我刚刚加入这里,还在学习 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 还很陌生.....

【问题讨论】:

    标签: javascript firefox bots imacros


    【解决方案1】:

    首先您应该阅读关于JavaScript Scripting Interface in 'iMacros for Firefox' 的wiki 信息。
    然后查看默认“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");
    }
    

    【讨论】:

    • 谢谢你的回答,我现在是这样实现的,但是你能给我关于问题后半部分的建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 2019-06-06
    • 2019-07-16
    相关资源
    最近更新 更多