Jump to content
Sign in to follow this  
Bebe

[Info] Scrierea scripturilor C ++

Recommended Posts

 

Scrierea scripturilor C ++

 

Scriptul C ++ este un dialect specific al limbajului de programare C ++ susținut de TestComplete. Se bazează pe JScript. Acesta a fost special conceput pentru a permite dezvoltatorilor C ++ să porteze cu ușurință rutinele de script la aplicațiile lor de auto-testare și conectare C ++ .

    Aplicațiile conectate și auto-testare sunt depășite. Nu vă recomandăm să le folosiți.
TestComplete poate înregistra și reda rutine C ++ Script. Adică puteți înregistra un script în TestComplete, debug-l acolo, apoi importați acest script în aplicația dvs. C ++ și faceți-l să funcționeze adăugând doar câteva rânduri. De exemplu:

// Acest cod a fost înregistrat de TestComplete:
 

funcție Test ()
{
  var p, w;
  p = Sys ["Proces"] ("notepad");
  w = p ["Window"] ("Notepad", "*");
  w [ "Activare"] ();
  w ["Window"] ("Edit") ["VScroll"] ["Pos"] = 0;
  w ["Fereastră"] ("Editare") ["Faceți clic"] (9, 9);
  Sys [ "Keys"] ( "Test");
  w [ "MainMenu"] [ "clic pe "] ( "File | Exit");

}

// Acest cod a fost importat într-o aplicație conectată C ++:
 

#include "c: \ TestComplete \ Aplicații conectate \ C ++ \ script.h"
folosind spațiul de nume TestComplete; Funcție
IMPLEMENT_TESTCOMPLETE_GLOBAL_OBJECTS
 

Test ()
{
  var p, w;
  p = Sys ["Proces"] ("notepad");
  w = p ["Window"] ("Notepad", "*");
  w [ "Activare"] ();
  w ["Window"] ("Edit") ["VScroll"] ["Pos"] = 0;
  w ["Fereastră"] ("Editare") ["Faceți clic"] (9, 9);
  Sys [ "Keys"] ( "Test");
  w [ "MainMenu"] [ "clic pe "] ( "File | Exit");

}

Limba codului înregistrat de TestComplete pentru proiectele dvs. C ++ este JScript. Deci, puteți scrie pur și simplu orice este permis în JScript și acest script va fi operațional. De exemplu, în scriptul JScript și C ++ toate variabilele și constantele sunt VARIANT. Trebuie să le declarați și ar trebui să faceți acest lucru folosind următorul format:

var p, w;

Sintaxa scripturilor C ++ este aceeași cu sintaxa scripturilor C # (deoarece C # Script se bazează și pe JScript). Acestea sunt aceleași atâta timp cât scripturile se află în TestComplete. Dacă exportați scripturi într-o aplicație conectată, acestea vor fi diferite. Adică, sintaxa rutinelor C ++ Script și C # Script exportate către aplicațiile C ++ și C # Conectate și auto-testare vor diferi.

Încă o dată, ideea de a avea scripturi C ++ ca limbaj de script separat pentru proiectele TestComplete este de a permite dezvoltatorilor, obișnuiți cu C ++, să scrie cod de script care necesită modificări minime atunci când sunt importate în aplicații C ++. Când scrieți un astfel de cod în C ++ Script, vă rugăm să rețineți următoarele reguli, care disting Cript + Script de JScript:

Atunci când apelați metode, utilizați numai următoarea notare: numele metodei sunt citate și plasate între paranteze, iar parametrii lor sunt plasați între paranteze:

C ++ Script
Jurnal ["Mesaj"] ("Mesajul meu", "Descrierea mesajului meu", 0, 1);

TestComplete folosește această notație atunci când înregistrează rutine C ++ Script. JScript utilizează o altă notație pentru apelurile de metodă:

JScript
Log.Message („Mesajul meu”, „Descrierea mesajului meu”, 0, 1);

Ar trebui să evitați această notare, deoarece nu este acceptată în C ++. În caz contrar, va trebui să rescrieți codul atunci când îl importați în C ++.

Pentru a aborda proprietățile din C ++ Script, ar trebui să utilizați și paranteze pătrate. De exemplu:

C ++ Script
p = w [„Părinte”]; // Salvarea valorii proprietății la o variabilă
Sys ["MouseX"] = 100; // Alocarea valorii proprietății

Pentru a avea acces la o proprietate indexată, folosiți următoarea sintaxă: . De exemplu:object["property_name"](index)

C ++ Script
var p = TestedApps ["Elemente"] (0); // Obținerea valorii proprietății
TestedApps ["Elemente"] (0) = "notepad.exe"; // Setarea valorii proprietății

Nu utilizați declarații JScript withși for...inși operatorii JScript ===, !==, >>>sau >>>=. Nu sunt acceptate în C ++. Dacă le utilizați, va trebui să vă actualizați codul atunci când îl importați într-o aplicație C ++.

De asemenea, aceste obiecte JScript nu sunt acceptate în prezent în aplicații C ++: Array, Boolean, Date, Function, Global, Math, Number, Object, RegExp, Errorși String.

Utilizați punct și virgulă la sfârșitul fiecărei afirmații.

Când ați introdus rutinele Script C ++ în cod C ++, încercați să compilați codul. Aceasta vă va spune dacă conține erori și unde le puteți găsi. Mai jos sunt cele mai frecvente modificări pe care poate fi necesar să le faceți:

C ++ Script utilizează numai VARIANTtipul de date, astfel încât nu este necesară specificarea tipului de excepții în try... catchblocuri. În C ++ trebuie să specificați întotdeauna tipurile de excepție.

Ar trebui să inițializați bibliotecile COM înainte de a rula scripturile importate și de a le inițializa atunci când scripturile nu mai funcționează. Cel mai simplu mod de a face acest lucru în aplicația dvs. este să utilizați IMPLEMENT_TESTCOMPLETE_GLOBAL_OBJECTS_MTAsau IMPLEMENT_TESTCOMPLETE_GLOBAL_OBJECTSmacros declarate în fișierul <TestComplete> \ Aplicații conectate \ C ++ \ scripts.h. Pentru mai multe informații despre aceste macro-uri, consultați Crearea aplicațiilor de auto-testare în C ++ sau Crearea de aplicații conectate în C ++ . Chiar dacă COM a fost deja inițializat cumva, aceste macro-uri nu vor dăuna nimic, așa că vă recomandăm să le utilizați întotdeauna.

Modificați instrucțiunile care atribuie valori proprietăților indexate. Pentru a seta o proprietate indexată, utilizați următoarea sintaxă: sau . De exemplu:object[Put("property_name")](index)object[(Put)"property_name"](index)

C ++ Script
TestedApps [Put ("Elemente")] (0) = "notepad.exe";
  sau

TestedApps [(Put) "Elemente"] (0) = "notepad.exe";
Dacă funcția dvs. C ++ Script returnează o valoare, ar trebui să modificați sintaxa ei după ce a fost importată în aplicația dvs. C ++:

C ++ Script

// Funcția returnează o
funcție de valoare Func1 ()
{
 return m;
}
C ++

// Funcția returnează o valoare
int Func1 ()
{
  return m;
}
Dacă funcția dvs. script nu returnează valorile, nu puteți modifica sintaxa acesteia, deoarece fișierul script.h, inclus în aplicația C ++, deține următoarea declarație:

functia voievodului tipedef
Deci, cuvântul cheie funcțional este identic cu void. De exemplu:

C ++ Script

// Funcția nu returnează o 
funcție valorică Func1 ()
{
}
C ++

// Funcția nu returnează o valoare
void Func1 ()
{
}
// sau
funcția Func1 ()
{
}

Rețineți că, pe lângă TestComplete, Script.h vă permite să lucrați cu alte servere COM, de exemplu cu Microsoft Word, în același mod. Script.h simplifică sintaxa folosită în aplicațiile C ++ pentru a lucra cu serverele COM prin legare tardivă. După ce ați obținut IDispatchinterfața serverului dorit, puteți adresa metodele și proprietățile acesteia folosind sintaxa C ++ Script în loc să apelați la GetIDsOfName, Invokeși alte metode:

C ++ Script
#include "c: \ TestComplete \ Aplicații conectate \ C ++ \ script.h"
...
folosind spațiul de nume TestComplete;
void Test ()
{
 / * Am folosit variabila
      COleInit și nu funcțiile API CoInitializeEx și CoUninitialize. * /
  COleInit g;

  var wrd;
  / * Metoda GetObject returnează o referință la serverul COM dorit.
     Realizează acțiunile, similare cu cele de mai jos:
      IDispatch * wrdVar;
      GUID WrdClass;
      CLSIDFromProgID (L "Word.Application", & WrdClass);
      CoCreateInstance (WrdClass, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void **) & wrdVar);
      wrd = wrdVar; * /
  wrd.GetObject (L "Word.Application");

 / * Codul următor efectuează unele operații cu serverul COM * /
  wrd ["Vizibil"] = true;
  wrd [ "Documente"] [ "Add"] ();
  wrd ["Selection"] ["InsertAfter"] ("Hello, world!");

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  


×