javascript - 循环 iMacros/JS 有问题

标签 javascript imacros

我这里有 Facebook 的 iMacros/JS 脚本,它需要从 CSV 文件登录到 FB 帐户,然后脚本有第二个循环 j,它正在发送 来自 1 个帐户的 20 个好友请求。

问题是,当您更改帐户时,会弹出一条消息,提示您需要验证电话号码,在这种情况下,我需要跳过此帐户并转到其他帐户。

这段代码意味着如果页面上出现消息,它必须从 j 循环中跳出:

if(iimPlayCode('TAG POS=1 TYPE=DIV ATTR=CLASS:"_2e9n"')>0) {
    break;}

问题是当脚本跳过这个帐户时,它也会跳过其他 CSV 文件中的 20 个 friend URL。

所以 j 循环必须始终在它停止的地方继续,如果“20”请求发送从位置“21”开始,但是当它跳过帐户时它也会跳过 CSV 文件中的 20 行。

var accounts = 10;
var total = 100;
var timeout = 'SET !TIMEOUT_STEP 0\n';
var speed = 'SET !REPLAYSPEED FAST\n';
var error = 'SET !ERRORIGNORE YES\n';

var x = 0;//if no error

//Login to account from csv file
for(var i = 1; i <= accounts; i++) {

    function LogIn() {
        iimPlayCode(speed+'SET !DATASOURCE Facebooklogin.csv\nSET !DATASOURCE_LINE '+i+'\nTAG POS=1 TYPE=INPUT:EMAIL ATTR=ID:"email" CONTENT={{!COL1}}\nTAG POS=1 TYPE=INPUT:PASSWORD ATTR=ID:"pass" CONTENT={{!COL2}}\nTAG POS=1 TYPE=LABEL ATTR=class:"uiButton uiButtonConfirm"\n')
    }

    //Check if already logged in then  relog to account from csv file
    if(iimPlayCode(speed+timeout+'TAG POS=1 TYPE=A ATTR=CLASS:"_2s25"')>0) {
        iimPlayCode(timeout+'TAG POS=1 TYPE=DIV ATTR=ID:"userNavigationLabel"\nTAG POS=2 TYPE=SPAN ATTR=TXT:Log<SP>Out')
        LogIn();
    } else { LogIn(); }   

 if(x==0) {
        var j = j*20-19;
    } else if (j > 20) {
        x = 0;
    }

    for (j; j <= total; j++) {

        //If Security Check
        if(iimPlayCode('TAG POS=1 TYPE=DIV ATTR=CLASS:"_2e9n"')>0) {
            x = 1;
            var j = j - 19;
            break;

         } else {
            x = 0;
         }

            //Send Message and Add Friend
            iimPlayCode(speed+error+'SET !TIMEOUT_STEP 0\nSET !DATASOURCE FacebookFriends.csv\nSET !DATASOURCE_LINE '+j+'\nURL GOTO={{!COL1}}\nSET !EXTRACT {{!URLCURRENT}}\nSAVEAS TYPE=EXTRACT FOLDER=* FILE={{!NOW:yyyy/mm/dd}}.csv\nTAG POS=1 TYPE=A ATTR=HREF:/messages/thread/*\nTAG POS=1 TYPE=TEXTAREA ATTR=CLASS:"br *" CONTENT=""\nTAG POS=1 TYPE=TEXTAREA ATTR=ID:"composerInput" CONTENT=""\nTAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:composer_form ATTR=NAME:send\nURL GOTO={{!COL1}}\n')

            if(j==20*i) { break; }
        }
    };//End of loop

最佳答案

我想你需要这样的东西:

var accounts = 10;
var total = 100;
var timeout = 'SET !TIMEOUT_STEP 0\n';
var speed = 'SET !REPLAYSPEED FAST\n';
var error = 'SET !ERRORIGNORE YES\n';

var x = 1;  // variable instead of 'i' in 'j'-loop 

//Login to account from csv file
for(var i = 1; i <= accounts; i++) {

    function LogIn() {
        iimPlayCode(speed+'SET !DATASOURCE Facebooklogin.csv\nSET !DATASOURCE_LINE '+i+'\nTAG POS=1 TYPE=INPUT:EMAIL ATTR=ID:"email" CONTENT={{!COL1}}\nTAG POS=1 TYPE=INPUT:PASSWORD ATTR=ID:"pass" CONTENT={{!COL2}}\nTAG POS=1 TYPE=LABEL ATTR=class:"uiButton uiButtonConfirm"\n')
    }

    //Check if already logged in then  relog to account from csv file
    if(iimPlayCode(speed+timeout+'TAG POS=1 TYPE=A ATTR=CLASS:"_2s25"')>0) {
        iimPlayCode(timeout+'TAG POS=1 TYPE=DIV ATTR=ID:"userNavigationLabel"\nTAG POS=2 TYPE=SPAN ATTR=TXT:Log<SP>Out')
        LogIn();
    } else { LogIn(); }   

    j = 20 * x - 19;
    for (j; j <= total; j++) {

        //If Security Check
        if(iimPlayCode('TAG POS=1 TYPE=DIV ATTR=CLASS:"_2e9n"')>0)
            break;

        //Send Message and Add Friend
        iimPlayCode(speed+error+'SET !TIMEOUT_STEP 0\nSET !DATASOURCE FacebookFriends.csv\nSET !DATASOURCE_LINE '+j+'\nURL GOTO={{!COL1}}\nSET !EXTRACT {{!URLCURRENT}}\nSAVEAS TYPE=EXTRACT FOLDER=* FILE={{!NOW:yyyy/mm/dd}}.csv\nTAG POS=1 TYPE=A ATTR=HREF:/messages/thread/*\nTAG POS=1 TYPE=TEXTAREA ATTR=CLASS:"br *" CONTENT=""\nTAG POS=1 TYPE=TEXTAREA ATTR=ID:"composerInput" CONTENT=""\nTAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:composer_form ATTR=NAME:send\nURL GOTO={{!COL1}}\n')

        if (j == 20 * x) {
            x++;
            break;
        }
    }
};//End of loop

关于javascript - 循环 iMacros/JS 有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38207010/

相关文章:

javascript - imacros 提取文本 javascript

javascript - 如何在需要 API key 的 Google Apps 脚本中使用外部 API?

imacros - 如果 iMacros 页面中存在文本,请单击按钮

javascript - 网页性能分析

javascript - 仅对阿拉伯文本应用样式

javascript - iMacros javascript 根据条件循环

javascript - 通过 url 将参数传递给 bookmarklet

javascript - 我如何选择元素以在模态宏上进行 react 选择

javascript - 纯 js 在滚动 x 量后添加和删除(切换)类?

javascript - HTML5 - 视频播放时每隔几秒触发一次事件