2017-08-08 3 views
0

Ich bin neu in JavaScript und ich brauche etwas Hilfe beim Abrufen der letzten extrahierten Wert von iMacros. Das Problem ist, dass, wenn ich die JavaScript-Funktion alert() benutze, es korrekt letzten Extrakt zeigt, aber dann, wenn die Bedingung nicht funktioniert.iMacros iimGetExtract()

Schritte von Makro:

  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

Der Fehler, den ich bekommen habe ist:

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

Hier ist der Code:

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

auf welcher Seite sollte diese imacros laufen? Wie von welcher Seite scharrst du? –

+0

ist ein internes Admin-Menü für einen Eshop, das Makro sollte die Produkt-ID kopieren, laden und fehlende Bilder von der Anbieter-Website hochladen. Es funktioniert jetzt mit einfachen imacros, aber es ist "hart codiert", 5 Bilder herunterzuladen, obwohl dort ist manchmal nur 2 Bilder, es entspricht Text "Bild konnte nicht hochgeladen werden" und geht dann auf die leere Registerkarte 1 und dann wartet Makro, bis es auf Seite mit Produkten gehen kann und klicken Sie auf Produkt bearbeiten ... – Jakub

+0

ok ohne die Website es wäre schwer zu programmieren, jedenfalls gute Arbeit, die es repariert –

Antwort

0

ich den Code für Probleme überprüft, fand ich dass es im unteren Block versagte.

else {iimPlay(goToProductUrl);} 

Da die goToProductUrl-Variable in der if-Bedingung definiert wird. Das if wird nicht ausgeführt und wenn es in den Else-Block eintritt, ist die Variable nicht definiert, daher schlägt das Programm fehl. Kann das Programm wegen fehlender URL nicht überprüfen, aber sollte der Else-Block so etwas sein?

else {iimPlay(macroStart);} 

Der Javascript-Fehler ist behoben, versuchen Sie Ihren Code nach dem Entfernen des Fehlers zu bauen.

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

Danke für Hilfe und Lösung :) – Jakub