Automatizacija tuđe veb aplikacije iz desktop programa

Desktop aplikacija koja upravlja pretraživačem umesto korisnika

Zadatak

Klijent je imao posao koji se svakog meseca ponavljao: nekoliko stotina poruka iz tabele treba poslati pojedinačno, sa evidencijom šta je poslato. Servis koji šalje SMS preko interneta nije bio rešenje — poruke su morale da idu sa njihovog broja, sa njihovog telefona i preko njihovog pretplatničkog paketa.

To ostavlja samo jedan put: aplikaciju koja radi ono što bi čovek radio rukom, u pretraživaču, ali bez čoveka.

Zašto je to teže nego što izgleda

Program koji upravlja tuđom veb aplikacijom nema ugovor sa njom. Nema API koji garantuje da će sutra raditi isto, nema poruku o grešci na koju se može računati, nema obećanje da će polje za unos teksta i dugme za slanje ostati tamo gde su danas. Sve što takav program ima jeste ekran, isti onaj koji vidi i korisnik.

Iz toga slede tri problema koja čine posao:

  • Čekanje. Veb aplikacija se ne javlja kada je spremna. Program koji krene prerano kucaće u polje koje još ne postoji, a program koji čeka fiksnih pet sekundi po poruci potroši pola sata na spisak koji traje deset minuta.
  • Prekid u pola posla. Ako se veza izgubi na sto pedesetoj poruci, ne sme se ni prekinuti ceo posao ni početi iz početka. Zato evidencija o poslatom ne stoji u memoriji programa nego u samoj tabeli, red po red, u trenutku slanja — pa ponovno pokretanje nastavlja tamo gde je stalo.
  • Uparivanje uređaja. Veb verzija poruka radi samo dok je telefon uparen sa računarom, a to uparivanje traži čoveka. Zato je taj jedan korak svesno ostavljen korisniku, a sve ostalo ide bez njega.

Kako je rešeno

Desktop aplikacija za Windows koja vodi pretraživač kroz korake koje bi korisnik prošao rukom, a tabelu koristi i kao ulaz i kao evidenciju. Sve što se u tuđoj veb aplikaciji može promeniti — nazivi polja, dugmadi, vremena čekanja — izmešteno je iz programa u podešavanja, pa promena na njihovoj strani znači izmenu jedne postavke, a ne novu verziju programa.

Pre prvog slanja aplikacija proverava da li je okruženje spremno i, ako nije, kaže šta nedostaje — jer greška prijavljena pre početka vredi mnogo više od greške u sto pedesetom redu.

Šta je klijent dobio

Posao koji je trajao radno popodne sada traje onoliko koliko traje samo slanje, a evidencija o tome šta je poslato i kada nastaje sama, kao deo posla, umesto da se vodi posle njega. Rešenje je u međuvremenu doterano u gotov proizvod, koji se kupuje na strani slanje SMS poruka iz Excela.

Vreme realizacije

Treći kvartal 2024.