繁体   English   中英

Javascript iMacros嵌套了while循环(宏中有两个循环)

[英]Javascript iMacros nested while loop (two loops in macro)

我一直在尝试使循环在循环中起作用。 我的意思是说,我将转到一个网站的多个页面,单击表格中的所有链接,并在链接之后从下一页中提取信息。 我在这里http://www.stackoverflow.com/questions/18402012/nested-loop-in-imacros-2nd-loop找到了这个问题,但我无法为我工作。 我认为问题发生在“ while(true)”或“ n = 1”部分。 我的代码看起来像这样:

const L = "\n";

var macro;
macro = "CODE:";
macro += "SET !ERRORIGNORE YES" + L; 
macro += "SET !DATASOURCE DailyCitySummaries.csv" + L;
macro += "SET !DATASOURCE_LINE {{i}}" + L; 
macro += "SET !WAITPAGECOMPLETE YES" + L; 
macro += "SET !EXTRACT_TEST_POPUP NO" + L; 
macro += "URL GOTO=http://{{!COL1}}" + L;
macro += "FRAME F=0" + L;
macro += "TAG POS=1 TYPE=A ATTR=HREF:/page/Results.cfm?type=location=* EXTRACT=TXT" + L; 
macro += "SAVEAS TYPE=EXTRACT FOLDER=/root/Desktop/ FILE=CityName.txt" + L; 

var macro1;
macro1 = "CODE:";
macro1 += "TAG POS=1 TYPE=A ATTR=TXT:city<SP>{{n}}" + L;
macro1 += "TAG POS=1 TYPE=STRONG ATTR=TXT:city<SP>* EXTRACT=TXT" + L; 
macro1 += "TAG POS=1 TYPE=TABLE ATTR=TXT:* EXTRACT=TXT" + L; 
macro1 += "SAVEAS TYPE=EXTRACT FOLDER=/root/Desktop FILE=CityDetails.csv" + L;

for (var i=1;i < 19;i++) 
{
iimSet("i", i);
iimPlay(macro)

     //set counter
    var n = 1   //this is only following the first link, I want all of them!
    while(true)   //this is suppose to be an infinite loop 
        {
        iimSet("n", n)
        var ret=iimPlay(macro1);
//kill loop when it comes to end and go to next location (first macro)
        if(ret<0) 
            {
            break;
            }
//increase counter
        n++;
        } //end of while loop
} //end of for loop

是我的格式或其他内容。 代码现在要做的是转到网页,提取一个表,单击概述表中的链接,转到该链接的详细信息页面,然后为该详细信息页面提取一个表。 问题在于,它没有单击概述表中的所有链接,仅单击了第一个链接,然后单击了下一个概述表的第一个循环。 每个概述表的链接数都不相同。 我对JavaScript非常了解,因此任何指针都将不胜感激。

如果有人希望看到最终运行的代码:

const L = "\n";

var macro;
macro = "CODE:";
macro += "SET !ERRORIGNORE YES" + L; 
macro += "SET !DATASOURCE DailyCitySummaries.csv" + L;
macro += "SET !DATASOURCE_LINE {{i}}" + L; 
macro += "SET !WAITPAGECOMPLETE YES" + L; 
macro += "SET !EXTRACT_TEST_POPUP NO" + L; 
macro += "URL GOTO=http://{{!COL1}}" + L;
macro += "FRAME F=0" + L;
macro += "TAG POS=1 TYPE=A ATTR=HREF:/page/Results.cfm?type=location=* EXTRACT=TXT" + L; 
macro += "SAVEAS TYPE=EXTRACT FOLDER=/root/Desktop/ FILE=CityName.txt" + L; 

var macro1;
macro1 = "CODE:";
macro1 += "TAG POS=1 TYPE=A ATTR=TXT:city<SP>{{n}}" + L;
macro1 += "TAG POS=1 TYPE=STRONG ATTR=TXT:city<SP>* EXTRACT=TXT" + L; 
macro1 += "TAG POS=1 TYPE=TABLE ATTR=TXT:* EXTRACT=TXT" + L; 
macro1 += "SAVEAS TYPE=EXTRACT FOLDER=/root/Desktop FILE=CityDetails.csv" + L;
macro1 += "BACK" + L;   // The difference that made a difference

for (var i=1;i < 19;i++) 
{
iimSet("i", i);
iimPlay(macro)

     //set counter
    var n = 1 
    while(true)   //this is an infinite loop 
        {
        iimSet("n", n)
        var ret=iimPlay(macro1);
//kill loop when it comes to end and go to next location (first macro)
        if(ret<0) 
            {
            break;
            }
//increase counter
        n++;
        } //end of while loop
} //end of for loop

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM