如果Extract> = 600,则在imacro Error中执行此操作

时间:2017-08-20 06:35:04

标签: imacros

我正在编写一个应该像这样工作的宏代码:

  1. 打开提供的链接 - 无错误
  2. 提取指定的文字 - 无错误
  3. 删除不必要的文字,留下摘录中的数字 - 没有错误
  4. 将摘录中的数字存储到变量" FF" - 没有错误
  5. 创建一个Windows提示符并显示提取的数字 - 无错误
  6. 文本或检查提取的数字是否大于或等于 600 - 不工作,请参阅以下错误
  7. 提示另一个窗口并说出"大于600"如果 满足条件,如果错误说"低于600" - 不工作 ALSO
  8. 任何人都可以指出并更正代码?对不起,非常感谢你的帮助。

    TAB T=1
    SET !EXTRACT_TEST_POPUP NO
    URL GOTO=https://www.instagram.com/user/
    
    TAG POS=1 TYPE=A ATTR=HREF:/user/following/ EXTRACT=TXT
    
    'removes the unnecessary text 
    SET FF EVAL("var s=\"{{!EXTRACT}}\"; s.replace(\"following\", \"\");")
    
    PROMPT {{FF}}
    
    SET !VAR1 EVAL("var FF="{{!EXTRACT}}\"; if(FF==663) alert("GREATER THAN 600"); else alert("LOWER THAN 600");")
    

    遇到错误:

    MacroSyntaxError:SET命令格式错误,第13行(错误代码:-910)

2 个答案:

答案 0 :(得分:2)

SET的问题在于你没有在结尾处明确设置返回值,而是以if-cases结束。 根据{{​​3}}

  

您需要通过将其作为单个语句添加到Javascript的末尾来显式返回最终值。

Correct: SET myVal EVAL("var x = 1; x;") // myVal = 1 
Incorrect: SET myVal EVAL("var x = 1;") // myVal = null 

如果您只想根据数字是否大于600输出这些文本,可以这样做:

SET !VAR1 EVAL("\"{{FF}}\" >= 600 ? \"GREATER THAN 600\" : \"LOWER THAN 600\";")
PROMPT {{!VAR1}}

请注意,您的 EXTRACT 不包含数字,但仍包含跟随的字符串,因此请使用已剥离的 FF 变量作为输入。

答案 1 :(得分:0)

我运行了你的代码,但它没有提取文本,所以我做了一个XPATH参考并提取了文本。如果您想使用此引用here,请在链接中建议使用chrome方法。无论如何,关于评估功能的一个重要说明。

  

对于eval函数,代码评估发生在与浏览器进程分开的执行上下文中,因此无法访问Web页面DOM。

参考: imacros forums

所以我建议您使用PROMPT函数向用户显示输出。

<强> CODE:

TAB T=1
'SET !EXTRACT_TEST_POPUP NO
SET !TIMEOUT_PAGE 15 
URL GOTO=https://www.instagram.com/user/

TAG XPATH="//*[@id='react-root']/section/main/article/header/div[2]/ul/li[3]/span/span" EXTRACT=TXT

SET !VAR1 EVAL("var FF=parseInt(\"{{!EXTRACT}}\"); if(FF==663) var temp = 'GREATER THAN 600'; else var temp = 'LOWER THAN 600';temp;")
PROMPT {{!VAR1}}