imacros/javascript 循环,在下一个按钮上有条件

Posted

技术标签:

【中文标题】imacros/javascript 循环,在下一个按钮上有条件【英文标题】:imacros/ javascript loop with condition on next button 【发布时间】:2017-11-08 10:55:54 【问题描述】:

javascript 上的菜鸟, 我试图制作一个从 *** 帖子中找到的脚本以在我的宏中工作,但它并没有按应有的方式工作,

我想做的是:

1- 使用从 csv 文件中提取的关键字搜索 google, 2-提取并保存内容。 3-转到下一页结果,提取并保存, 4-它应该继续下一个按钮,直到没有下一个按钮, 5- 然后它应该从 csv 文件转到下一个关键字。

循环工作,但我不知道为什么它只点击下一个按钮 4 次,并继续下一个关键字。

我在开始时尝试了两种带有“while”条件的变体,但结果是一样的。

感谢您对此的帮助, 我在 Windows 7 32 位和 imacros 8.9.7 上使用 FF 55 这是我的宏,提取和保存不包括在内,

                            var macro;
                            macro = "CODE:";
                            macro +=  "SET !ERRORIGNORE YES" + "\n";
                            macro +=  "SET !EXTRACT_TEST_POPUP NO" + "\n";
                            macro +=  "SET !DATASOURCE keywords.csv" + "\n";
                            macro +=  "SET !DATASOURCE_COLUMNS 1" + "\n";
                            macro +=  "SET !LOOP 1" + "\n";
                            macro +=  "SET !DATASOURCE_LINE RowNo" + "\n";

                            macro +=  "URL GOTO=https://www.google.com/ncr" + "\n";
                            macro +=  "TAG POS=1 TYPE=INPUT:TEXT FORM=ID:tsf ATTR=ID:lst-ib CONTENT=!COL1" + "\n";
                            macro +=  "TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:tsf ATTR=NAME:btnK" + "\n";

                            var NextBtnCheck=iimGetLastExtract();

                            var NextButton;
                            NextButton = "CODE:";
                            NextButton +=  "SET !ERRORIGNORE YES" + "\n";
                            NextButton +=  "SET !EXTRACT_TEST_POPUP NO" + "\n";
                            NextButton +=  "TAB T=1" + "\n";

                            NextButton +=  "WAIT SECONDS=1" + "\n";
                            NextButton +=  "TAG POS=1 TYPE=A ATTR=TXT:Next" + "\n";
                            NextButton +=  "WAIT SECONDS=0.5" + "\n";


                            for(var m=1; m<60; m++)
                            iimSet("RowNo",m)
                            iimPlay(macro)

                            var n = 0
                            var n= iimPlay(NextButton);

                                do
                                    
                                    iimSet("n",n)
                                    iimPlay(NextButton);

                                    if (NextBtnCheck !== "#EANF#");
                                    break;
                                    n++; 
                                     
                                    while(true)
                                    
                                   iimSet("n",n);
                                    iimPlay(NextButton);
                                    
                            

【问题讨论】:

【参考方案1】:

我已经像这样更正了您的代码:

var macro =  "SET !DATASOURCE keywords.csv" + "\n";
macro +=  "SET !DATASOURCE_LINE RowNo" + "\n";
macro +=  "URL GOTO=https://www.google.com/ncr" + "\n";
macro +=  "TAG POS=1 TYPE=INPUT:TEXT FORM=ID:tsf ATTR=ID:lst-ib CONTENT=!COL1" + "\n";
macro +=  "TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:tsf ATTR=NAME:btnK" + "\n";

var NextButton =  "TAB T=1" + "\n";
NextButton +=  "WAIT SECONDS=1" + "\n";
NextButton +=  "TAG POS=1 TYPE=A ATTR=TXT:Next" + "\n";
NextButton +=  "WAIT SECONDS=0.5" + "\n";

for(var m=1; m<60; m++) 
    iimSet("RowNo",m)
    iimPlayCode(macro)

    do 
        var NextBtnCheck = iimPlayCode(NextButton);
        if (NextBtnCheck != 1)
            break;
     while(true)

【讨论】:

主宏不播放,我在播放,NextButton宏播放, 然后尝试用您的代码替换我的“宏”。

以上是关于imacros/javascript 循环,在下一个按钮上有条件的主要内容,如果未能解决你的问题,请参考以下文章

Ipython笔记本:在下一步之前“实时”显示for循环图像[重复]

为啥在下面的 for 循环中没有任何条件检查?

foreach 循环中的实体验证,如果验证失败,则在下一个循环中保持失败

Jmeter 在下一个线程循环中保留“结果变量名”的值

我想在下面的代码中包含一个 for 循环,它可以每隔 n 秒连续发送数据 id、时间戳和消息

如何告诉 CasperJS 循环浏览一系列页面