我正在编写一个应该像这样工作的宏代码:
任何人都可以指出并更正代码?对不起,非常感谢你的帮助。
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)
答案 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}}