iMacro Поиск элемента

Я пишу сценарий С++ 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, который согласно эта страница означает Load Failed: Failed to load the macro (syntax or I/O error) (Found wrong macro command while loading file).

Кто-нибудь знает, в чем проблема?


person Richard    schedule 09.01.2014    source источник


Ответы (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 используется для разделения командных строк.

person macroscripts    schedule 09.01.2014