【问题标题】:Imacro : How to skip if TAG doesn't match any elements on a page?Imacro:如果 TAG 与页面上的任何元素都不匹配,如何跳过?
【发布时间】:2013-04-20 10:33:58
【问题描述】:

如果 TAG 与页面中的任何元素都不匹配,我希望我的代码中断循环,但这不起作用。

var result = "";
var counter = 1;
while(true)
{    
var ret_code = iimPlay("CODE:TAG POS="+counter+" TYPE=A ATTR=HREF:http://www.xxx.com/index.php?topic=*.0 EXTRACT=HREF",60);
    if(ret_code<0)
        break;
    s = iimGetLastExtract();    
    result += " "+s;    
    counter++;
}

TAG 代码不断运行,而不是在找不到任何匹配元素时自行停止。

是否可以使用返回码来执行此操作以及如何执行此操作?

谢谢,

【问题讨论】:

    标签: loops extract imacros


    【解决方案1】:

    您的代码将永远不会停止,因为 ret_code 将始终为 1,因为您正在抓取数据,即使未找到元素,它也会成功抓取并返回等于“#EANF#”的默认值,以使此代码正常工作如您所愿,您需要将其拆分为 2 个步骤 - 第一步将检查元素是否存在,第二步将刮擦 - 这是示例:

    var result = "";
    var counter = 1;
    while(true)
    {    
    iimSet("counter",counter);
    var ret_code = iimPlay("CODE:TAG POS={{counter}} TYPE=A ATTR=HREF:http://www.xxx.com/index.php?topic=*.0");
        if(ret_code<0){break;}
    iimSet("counter",counter);
    ret_code = iimPlay("CODE:TAG POS={{counter}} TYPE=A ATTR=HREF:http://www.xxx.com/index.php?topic=*.0 extract=href");
        s = iimGetLastExtract();    
        result += " "+s;    
        counter++;
    }
    

    【讨论】:

    • CONTENT=EVENT:MOUSEOVER 一直为我工作。如果元素存在则返回 true,否则返回 false。
    • 从未尝试过,但无论如何在浏览器中模拟鼠标悬停是非常不可靠的,因为您可以将鼠标移动到浏览器上,它会破坏对指定元素的悬停效果,所以我不建议这样做它
    【解决方案2】:
    var result = "";
    var counter = 1;
    while(true)
    {    
    iimSet("counter",counter)
    var ret_code = iimPlay("CODE:TAG POS={{counter}} TYPE=A ATTR=HREF:http://www.xxx.com/index.php?topic=*.0 EXTRACT=HREF",60);
        if(ret_code<0)
            break;
        s = iimGetLastExtract();    
        result += " "+s;    
        counter++;
    }
    

    我已经看过几次了

    iimPlay("CODE:TAG POS="+counter+" TYPE=A ATTR=HREF:http://www.xxx.com/index.php?topic=*.0 EXTRACT=HREF",60)
    

    但我从未使用过这种方法。所以我把它改成了这个。

    iimSet("counter",counter)
    var ret_code = iimPlay("CODE:TAG POS={{counter}} TYPE=A ATTR=HREF:http://www.xxx.com/index.php?topic=*.0 EXTRACT=HREF",60)
    

    除此之外,我没有看到任何错误。尝试一下,如果不起作用,我们会尝试其他方法。

    【讨论】:

      猜你喜欢
      • 2018-12-29
      • 2019-03-25
      • 2012-07-18
      • 2016-04-16
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 2018-10-02
      相关资源
      最近更新 更多