Forum Discussion

BenoitB's avatar
BenoitB
Community Hero
5 years ago

My low level click shared to all

I share with the community my low level click. Used widely in our web/desktop tests.

 

Note:

  system.debug is a global unit setting activating more logs when set to true.

  system.logDebug is a global log attributes setting.

 

/**
 * Click dans un objet via les méthodes Low Level<br>
 * @author Biache Benoit  
* @memberof system
* @function * @param {Object} Obj - Objet à cliquer, s'il n'est pas existant alors ignore le click, pour cliquer directement dans l'écran utiliser <b>"screen"</b> * @param {number} [X=-1] - Position X du click depuis le bord gauche de l'objet, s'il est non défini ou défini à <b>-1</b> alors prend le milieu * @param {number} [Y=-1] - Position Y du click depuis le bord haut de l'objet, s'il est non défini ou défini à <b>-1</b> alors prend le milieu * @param {number} [Button=MK_LBUTTON] - Bouton utilisé pour le click (MK_LBUTTON, MK_RBUTTON_ MK_MBUTTON) * @param {number} [Repeat=1] - Nombre de click à jouer. S'il n'est pas défini alors n'effectue qu'un clic * @param {number} [Wait=200] - Durée en ms entre chaque clic, utile si <b>Repeat</b> est > 1 * @param {boolean} [Hide=true] - <b>true</b> alors gérer le masquage de l'objet Indicator */ function clickInObject(Obj, X = -1, Y = -1, Button = MK_LBUTTON, Repeat = 1, Wait = 200, Hide = true) { if ((Obj == undefined) || (Obj == null))
if (system.debug)
Log.Message("clickInObject() - Objet inexistant", "", pmLowest, system.logDebug);
return;
} if (Obj == "screen") { X = X == -1 ? Sys.Dekstop.Width >> 1 : X; Y = Y == -1 ? Sys.Dekstop.Height >> 1 : Y; Xr = X; Yr = Y; if (system.debug) Log.Message("clickInObject(screen, " + X + ", " + Y + ", " + Button + ", " + Repeat + ", " + Wait + ", " + Hide + ") - Click Low Level", "", pmLowest, system.logDebug); } else { if ((Obj != null) && (!Obj.Exists)) { if (system.debug)
Log.Message("clickInObject() - Objet invalide", "", pmLowest, system.logDebug);
return;
} X = X == -1 ? Obj.Width >> 1 : X; Y = Y == -1 ? Obj.Height >> 1 : Y; Xr = Obj.ScreenLeft + X; Yr = Obj.ScreenTop + Y; if (system.debug) Log.Message("clickInObject(" + Obj.FullName + ", " + X + ", " + Y + ", " + Button + ", " + Repeat + ", " + Wait + ", " + Hide + ") - Click Low Level", "X reel = " + Xr + ", Y reel = " + Yr, pmLowest, system.logDebug); } if ((Hide) && ((Yr < 350) && (Xr > (Sys.Desktop.Width - 400)))) Indicator.Hide(); for (let loop = 0; loop < Repeat; loop++) { LLPlayer.MouseDown(Button, Xr, Yr, 100); LLPlayer.MouseUp(Button, Xr, Yr, 50); aqUtils.Delay(Wait); } if (Hide) Indicator.Show(); }

 

 

Usage is very simple :

 

let item = my object;

// Left simple click in the middle of the object
clickInObject(item);

// Right simple click at pos 10,10 inside the object
clickInObject(item, 10, 10, MK_RBUTTON);

// Double left click on hte middle of the object:
clickInObject(item, -1, -1, MK_LBUTTON, 2, 25);

// Left click on middle of the screen
clickInObject("screen");

 

 

1 Reply

  • sonya_m's avatar
    sonya_m
    SmartBear Alumni (Retired)

    BenoitB thank you so much for sharing this great piece of information with the community members!

    This is greatly appreciated.