iMacro寻找元素

时间:2014-01-09 15:22:41

标签: c++ checkbox macros imacros

我正在编写一个C ++ iMacro脚本,它将登录网站,转到特定页面,然后查找复选框。如果该复选框不存在,则脚本将每隔X秒刷新一次页面。如果复选框确实存在,那么它将选择它。基本上我只需要弄清楚如何让iMacro搜索复选框。到目前为止,这是我的代码:

using namespace System;
#include <string>

int timeout = 60;
ref class ManagedGlobals {
public:
    static iMacros::AppClass^ app;
};

// test if element exists
bool doesElementExist() {
    iMacros::Status stat;
    ManagedGlobals::app->iimDisplay("Searching for element", timeout);
    stat = ManagedGlobals::app->iimPlay("CODE:SET !TIMEOUT_TAG 1\n"
        + "CODE:TAG POS=8 TYPE=INPUT:CHECKBOX FORM=ACTION:/pls/PROD/bwykfreg.P_AltPin1?deviceType=C ATTR=NAME:sel_crn EXTRACT=TXT", timeout);
    ManagedGlobals::app->iimDisplay(stat.ToString(), timeout);
    ManagedGlobals::app->iimPlay("CODE:WAIT SECONDS=10", timeout);
    if (stat != iMacros::Status::sOk) {
        ManagedGlobals::app->iimDisplay("Didn't find it", timeout);
        return false;
    }
    ManagedGlobals::app->iimDisplay("Found it", timeout);
    return true;
}

我在页面上对此进行了测试,复选框已存在,但脚本无法找到它而是返回错误代码-1100,根据this page表示Load Failed: Failed to load the macro (syntax or I/O error) (Found wrong macro command while loading file).

任何人都知道问题是什么?

1 个答案:

答案 0 :(得分:1)

尝试删除此部分。

FORM=ACTION:/pls/PROD/bwykfreg.P_AltPin1?deviceType=C

此部分可以在页面上更改,但TAG不需要找到该元素。同时尝试通过更改POS = 8来更改复选框的位置。从1到15开始,看看这个数字也会改变。

您也可以更改此

stat = ManagedGlobals::app->iimPlay("CODE:SET !TIMEOUT_TAG 1\n"
        + "CODE:TAG POS=8 TYPE=INPUT:CHECKBOX FORM=ACTION:/pls/PROD/bwykfreg.P_AltPin1?deviceType=C ATTR=NAME:sel_crn EXTRACT=TXT", timeout);

进入这个

stat = ManagedGlobals::app->iimPlay("CODE:SET !TIMEOUT_TAG 1\n"
        + "TAG POS=8 TYPE=INPUT:CHECKBOX ATTR=NAME:sel_crn EXTRACT=TXT", timeout);

CODE:只能在一个宏内出现一次。 \n用于分割命令行。