Я пишу сценарий 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, который в соответствии с эта страница это значит Load Failed: Failed to load the macro (syntax or I/O error) (Found wrong macro command while loading file).
Кто-нибудь знает, в чем проблема?
Попробуйте удалить эту часть.
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);
КОД: может появиться только один раз внутри одного макроса. \n
используется для разделения командных строк
Других решений пока нет …