我是这个网站的新手。我用 javascript 为 Imacros 编写了一段代码,但它给了我错误。
配置信息:
火狐版本 32.0 IMACROS 版本构建=8810214 Windows XP SP 2
情况:
我想制作一个宏,它检查屏幕上是否有特定文本,如果存在,则运行另一个宏并继续,如果文本不在屏幕上,则继续...
所以,这是我的代码(在其他人的帮助下编写的)
for (i = 0; i < 50000; i++) {
var macro;
macro = "CODE:";
macro += "VERSION BUILD=8810214 RECORDER=FX" + "\n";
macro += "TAB T=1" + "\n";
macro += "SET !EXTRACT_TEST_POPUP NO" + "\n";
macro += "SET !TIMEOUT_STEP 0" + "\n";
iimPlay(macro)
var verify;
verify = "CODE:";
verify += "SET !EXTRACT_TEST_POPUP NO" + "\n";
verify += "SET !TIMEOUT_STEP 0" + "\n";
verify += "TAG POS=1 TYPE=DIV ATTR=TXT:Beat<SP>Me EXTRACT=TXT" + "\n";
iimPlay(verify)
var G_Extract= iimGetLastExtract(1);
if (G_Extract!=="#EANF#")
{
var captchasolver;
captchasolver = "CODE:";
captchasolver += "VERSION BUILD=8820413 RECORDER=FX" + "\n";
captchasolver += "TAB T=1" + "\n";
captchasolver += "SET !EXTRACT_TEST_POPUP NO" + "\n";
captchasolver += "ONDOWNLOAD FOLDER=d:\ FILE=captcha.jpg" + "\n";
captchasolver += "TAG POS=1 TYPE=IMG ATTR=HREF:*captcha* CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT" + "\n";
captchasolver += "TAB OPEN" + "\n";
captchasolver += "TAB T=2" + "\n";
captchasolver += "URL GOTO=http://www.9kw.eu/grafik/form.html" + "\n";
captchasolver += "TAG POS=1 TYPE=INPUT ATTR=NAME:apikey CONTENT=xxxxxxx" + "\n";
captchasolver += "TAG POS=1 TYPE=INPUT ATTR=NAME:prio CONTENT=0" + "\n";
captchasolver += "TAG POS=1 TYPE=INPUT:CHECKBOX FORM=ACTION:/index.cgi ATTR=NAME:selfsolve CONTENT=NO" + "\n";
captchasolver += "TAG POS=1 TYPE=INPUT:CHECKBOX FORM=ACTION:/index.cgi ATTR=NAME:confirm CONTENT=NO" + "\n";
captchasolver += "TAG POS=1 TYPE=INPUT:CHECKBOX FORM=ACTION:/index.cgi ATTR=NAME:case-sensitive CONTENT=NO" + "\n";
captchasolver += "TAG POS=1 TYPE=INPUT:CHECKBOX FORM=ACTION:/index.cgi ATTR=NAME:selfsolve CONTENT=NO" + "\n";
captchasolver += "TAG POS=1 TYPE=INPUT ATTR=NAME:source CONTENT=imacros" + "\n";
captchasolver += "TAG POS=1 TYPE=INPUT ATTR=NAME:file-upload-01 CONTENT=D:\captcha.jpg" + "\n";
captchasolver += "TAG POS=1 TYPE=INPUT ATTR=TYPE:submit" + "\n";
captchasolver += "TAG POS=1 TYPE=* ATTR=* EXTRACT=TXT" + "\n";
captchasolver += "TAB CLOSE" + "\n";
captchasolver += "TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:NoFormName ATTR=NAME:captcha CONTENT={{!EXTRACT}}" + "\n";
captchasolver += "TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:NoFormName ATTR=NAME:button" + "\n";
captchasolver += "TAG POS=1 TYPE=A ATTR=TXT:Continue<SP>Battle" + "\n";
iimPlay(captchasolver)
}
else
{var submit;
submit = "CODE:";
submit += "SET !EXTRACT_TEST_POPUP NO" + "\n";
submit += "SET !TIMEOUT_STEP 0" + "\n";
submit += "TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:submit.php* ATTR=NAME:submit" + "\n";
iimPlay(submit)}
//New Step
iimPlay(verify)
var G_Extract= iimGetLastExtract(1);
if (G_Extract!=="#EANF#")
{
iimPlay(captchasolver)
}
else
{iimPlay(submit)}
//New Step
iimPlay(verify);
var G_Extract= iimGetLastExtract(1);
if (G_Extract!=="#EANF#")
{
iimPlay(captchasolver)
}
}
正如你所看到的,首先是一个简单的 for 循环,然后 iimplan(macro) 只是用于重要的事情,例如没有提取弹出窗口,超时步骤 0 等等......
iimplay(verify) 提取特定文本,然后我使用 if 语句检查该行是否存在 G_Extract !== EANF,然后运行 captchasolver,否则,继续...
脚本中也发生了同样的事情。
问题:
我带来了带有我不想要的文本的页面,并且脚本工作了,它运行了 captchasolver 脚本,但是当我运行主脚本时,不需要的文本不在屏幕上,并在返回后离开,我发现即使屏幕上出现了不需要的文本,脚本也没有运行 captchasolver 脚本...
所以,我的问题是,这可能是什么原因,以及如何解决它?请帮忙..
我可以做什么来离线测试它?
最佳答案
将 imacros 与 javascript 结合使用用于 if 和 else。 在线服务无法进行离线测试,我认为最好的方法是使用 javascript 和 jquery 来解决您的问题。
查看有关 javascript、jquery 和 imacros 的其他线程 How to make imacro to select/solve the captcha?(RecaptchaV2)和 iMacros Http POST to API endpoint
关于Imacros 中的 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25722340/