【问题标题】:Imacros - Extract and select multiple items from selector via predefined variableImacros - 通过预定义变量从选择器中提取和选择多个项目
【发布时间】:2017-05-20 11:53:49
【问题描述】:

我正在尝试从表格中提取一些内容以用于在多选框上选择项目。

这很好用:

VERSION BUILD=9030808 RECORDER=FX
TAB T=1
URL GOTO=https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select_multiple
FRAME NAME="iframeResult"
TAG POS=1 TYPE=SELECT FORM=ACTION:/action_page.php ATTR=NAME:cars CONTENT=%volvo:%opel

为什么将提取内容创建为变量时,它不起作用:

名为SET CARS volvo:%opel的变量

VERSION BUILD=9030808 RECORDER=FX
TAB T=1
URL GOTO=https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select_multiple
FRAME NAME="iframeResult"
SET CARS volvo:%opel
TAG POS=1 TYPE=SELECT FORM=ACTION:/action_page.php ATTR=NAME:cars CONTENT=%{{CARS}}

错误信息:

Entry [volvo:%opel] not available [Box has 4 entries], line: 6 (Error code: -924)

【问题讨论】:

    标签: extract imacros


    【解决方案1】:

    另外我可以建议另一种方式:

    ' ... '
    FRAME NAME="iframeResult"
    SET CARS "volvo,opel"
    EVENT TYPE=CLICK XPATH=EVAL("'//HTML/BODY/FORM/SELECT/OPTION[@value=\\'' + '{{CARS}}'.split(',')[0] + '\\']';") BUTTON=0 MODIFIERS="ctrl"
    EVENT TYPE=CLICK XPATH=EVAL("'//HTML/BODY/FORM/SELECT/OPTION[@value=\\'' + '{{CARS}}'.split(',')[1] + '\\']';") BUTTON=0 MODIFIERS="ctrl"
    

    根据wiki documentation,你必须这样写代码:

    ' ... '
    FRAME NAME="iframeResult"
    SET CAR1 "volvo"
    SET CAR2 "opel"
    TAG POS=1 TYPE=SELECT FORM=ACTION:/action_page.php ATTR=NAME:cars CONTENT=%{{CAR1}}:%{{CAR2}}
    

    【讨论】:

    • 感谢您的回答。不幸的是,这并不是我想要的,因为我有任意数量的值。
    • 没问题。在这种情况下,JavaScript Scripting Interface 将为您提供完美的帮助。
    • 只是环顾四周,似乎再也无法从 Imacros for Firefox 中访问 DOM 了:-(
    • Guess URL GOTO 可以用作黑客... 将不得不尝试。 stackoverflow.com/questions/30608734/…
    【解决方案2】:

    找到了一种使用脚本界面的方法。只需添加项目列表即可选择usign JS:

    function createMultiSelector(list) {
        macro = "CODE:";
        macro += "URL GOTO=https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select_multiple\n";
        macro += "FRAME = 'iframeResult'\n";
        macro += "TAG POS=1 TYPE=SELECT FORM=ACTION:/action_page.php ATTR=NAME:cars CONTENT=%"+list+"\n";
        iret = iimPlay(macro);
    }
    

    【讨论】:

    • 一般来说,答案如果包含对代码用途的解释会更有用。
    猜你喜欢
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2020-08-13
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    相关资源
    最近更新 更多