2017-08-08 109 views
0

我是JavaScript新手,我需要一些帮助,从iMacros获取最后提取的值。问题是,当我使用JavaScript函数alert()时,它显示正确的最后提取,但如果条件不起作用。宏iMacros iimGetExtract()

步骤:

  1. Click on image which is positioned based on LOOP

  2. Click on button and if there exists a text, extract the text and if text is 2 start another iim code. The code is more complex, this is only part for extract debug which is important for conditionals which starts another piece of code

我得到的错误是:

TypeError: path is undefined, line -633 (Error code: -991)

下面是代码:

var numPage = prompt("current numPage?"); 
numPage++; 
var i = 1; 
var macroStart; 
macroStart = "CODE:"; 
macroStart += "'set global variables" + "\n"; 
macroStart += "SET !EXTRACT_TEST_POPUP NO" + "\n"; 
macroStart += "SET tabCheck NULL" + "\n"; 
macroStart += "SET !ERRORIGNORE YES" + "\n"; 
macroStart += "SET !EXTRACT NULL" + "\n"; 
macroStart += "SET !TIMEOUT_STEP 1" + "\n"; 
macroStart += "SET !CLIPBOARD NULL" + "\n"; 
macroStart += "SET productUrl {{!URLCURRENT}}" + "\n"; 
macroStart += "TAG POS={{i}} TYPE=IMG ATTR=SRC:https://www.xxx.sk/admin/xxx/xxx/img/uprav.gif" + "\n"; 
macroStart += "TAG POS=1 TYPE=A ATTR=ID:zalozka_obrazky" + "\n"; 
macroStart += "TAG POS=1 TYPE=A ATTR=TXT:2 EXTRACT=TXT" + "\n"; 

macroStartExtract = iimGetLastExtract(); 
if (macroStartExtract == 2) { 
    var goToProductUrl; 
    goToProductUrl += "'back to main product's page" + "\n"; 
    goToProductUrl += "SET !VAR5 2" + "\n"; 
    goToProductUrl += "PROMPT !VAR5" + "\n"; 
    iimPlay(goToProductUrl); 
    } else {iimPlay(goToProductUrl);} 


var macroChangePage; 
macro2 = "CODE:" 
macro2 += "TAG POS=2 TYPE=A ATTR=TXT:{{numPage}}" 

while (i < 2) { 
    iimSet("i",i) 
    iimPlay(macroStart) 
    i++; 

    if (i == 2) { 
     iimSet("numPage", numPage) 
     iimPlay(macroChangePage) 
     numPage++ 
     i = 1; 
    } 
} 
+0

该imacros在哪个页面上运行?比如你从哪个网站上刮取? –

+0

它是一个eshop的内部管理菜单,宏应该复制产品ID,从供应商网站上下载并上传缺少的图片。它现在可以使用简单的图像编辑器,但它可以“硬编码”下载5张图片,即使有有时只有2张图片,它匹配文字“图片无法上传”,然后进入空白标签页1,然后宏等待,直到它可以进入产品页面并点击编辑产品... – Jakub

+0

没有网站ok会很难编码,无论如何,好工作修复它 –

回答

0

我检查,出现问题的代码,我发现它在下面的块中失败。

else {iimPlay(goToProductUrl);} 

由于goToProductUrl变量在if条件中得到了定义。 if没有被执行,当它进入else块时,变量是未定义的,因此程序失败。由于缺少URL而无法检查程序是否工作,但是如果else块是这样的?

else {iimPlay(macroStart);} 

javascript错误已修复,请在删除错误后尝试构建代码。

var numPage = prompt("current numPage?"); 
numPage++; 
var i = 1; 
var macroStart; 
macroStart = "CODE:"; 
macroStart += "'set global variables" + "\n"; 
macroStart += "SET !EXTRACT_TEST_POPUP NO" + "\n"; 
macroStart += "SET tabCheck NULL" + "\n"; 
macroStart += "SET !ERRORIGNORE YES" + "\n"; 
macroStart += "SET !EXTRACT NULL" + "\n"; 
macroStart += "SET !TIMEOUT_STEP 1" + "\n"; 
macroStart += "SET !CLIPBOARD NULL" + "\n"; 
macroStart += "SET productUrl {{!URLCURRENT}}" + "\n"; 
macroStart += "TAG POS={{i}} TYPE=IMG ATTR=SRC:https://www.xxx.sk/admin/xxx/xxx/img/uprav.gif" + "\n"; 
macroStart += "TAG POS=1 TYPE=A ATTR=ID:zalozka_obrazky" + "\n"; 
macroStart += "TAG POS=1 TYPE=A ATTR=TXT:2 EXTRACT=TXT" + "\n"; 

macroStartExtract = iimGetLastExtract(); 
if (macroStartExtract == 2) { 
    var goToProductUrl; 
    goToProductUrl += "'back to main product's page" + "\n"; 
    goToProductUrl += "SET !VAR5 2" + "\n"; 
    goToProductUrl += "PROMPT !VAR5" + "\n"; 
    iimPlay(goToProductUrl); 
    } else {iimPlay(macroStart);} 


var macroChangePage; 
macro2 = "CODE:" 
macro2 += "TAG POS=2 TYPE=A ATTR=TXT:{{numPage}}" 

while (i < 2) { 
    iimSet("i",i) 
    iimPlay(macroStart) 
    i++; 

    if (i == 2) { 
     iimSet("numPage", numPage) 
     iimPlay(macroChangePage) 
     numPage++ 
     i = 1; 
    } 
} 
+0

感谢您的帮助和解决方案:) – Jakub