Încărcarea unui fișier pe site. Utilizând obiectul de intrare.
Prin numeroasele solicitări ale cititorilor noștri, am decis să începem o serie de articole care vă vor ajuta să înțelegeți cum puteți rezolva aceste sau alte probleme folosind Emulatorul Uman. Și vom începe să încărcăm fișierul pe site.
Aceasta ar putea arăta astfel:
Sau trebuie să încărcați fișierul la serviciul de partajare a fișierelor, de exemplu pe filefiles.com:
Sau pe orice alt site unde se utilizează câmpurile de descărcare a fișierelor
Exemple de câmpuri de descărcare a fișierelor pe site-ul umanemulator.net
Descărcarea unui fișier în html se face prin etichetă. Pentru a lucra cu această etichetă, există un obiect inputfile în Emulator uman. Pentru a completa câmpurile de descărcare a fișierelor, utilizați comenzile $ inputfile-> set_value_by_name și $ inputfile-> set_value_by_number. Scripturile cu exemple ale acestor comenzi pot fi găsite în fila Quick Start din dosarul "Tests \ DOM \ inputfile \ common".
Acum vom scrie un script pentru placa emarket.ua. Deci, du-te la om pe emarket.ua. Apoi mergeți la pagina de adăugare a bunurilor și găsiți câmpul în care doriți să adăugați fotografii. În loc să introduceți calea către fișier, vedem un buton cu textul "+ Adăugați". După ce faceți clic pe el, avem un dialog de sistem pentru deschiderea unui fișier cu titlul "Selectați fișierele pentru a trimite utilizând emarket.ua". În diferite sisteme, titlul dialogului poate diferi.
Pentru a gestiona aceste dialoguri Emulator uman are o caracteristică specială $ Window-> execute_open_file ($ text, calea de $, $ btn_text, $ exact = true, fir $ = false);. Acum, în scenariu, trebuie doar să faceți clic pe buton și să solicităm procesarea dialogului care apare.
Pentru a face acest lucru, faceți clic dreapta pe butonul cu textul pentru a adăuga "+ Adăugați". Alegeți elementul de meniu "Faceți clic", submeniul $ object-> click_in_by_name ("uploadButton") ;. Această linie apare în scenariu.
Notă: Pentru a lucra cu obiecte, este mai bine să folosiți funcții care funcționează după nume sau id sau un alt atribut unic al elementului, deoarece atunci când adăugați un element din același tip, numerele se pot schimba și scriptul se va opri. Din nou, trebuie să introduceți numere în scenariu. În cazul în care site-ul nu se schimbă des, atunci în principiu nu este nimic de îngrijorat, în cazul în care site-ul se schimbă în mod regulat, atunci se poate plictisi repede.
Rulați scenariul. Nimic nu se întâmplă. Funcția click_in_by_name are parametrii ($ name, $ x = -1, $ y = -1, $ frame = -1); Să încercăm să transferăm coordonatele butonului la această funcție. Pentru a obține coordonatele, folosim funcțiile $ object-> get_x_by_name și $ object-> get_y_by_name în script, acesta va arăta astfel:
Dacă butonul nu este vizibil în browser, apăsarea pe acesta poate să nu funcționeze. Prin urmare, când faceți clic pe un element din Emulatorul Uman, browserul de programe trece automat la acest element, astfel încât acesta să devină vizibil. Aceasta poate schimba coordonata Y a elementului. Dar elementul va fi întotdeauna în partea de jos a browserului, astfel încât să putem lega elementul Y la înălțimea browserului. Ca urmare, scenariul va:
Rulați scenariul. A fost deschis un dialog pentru selectarea unui fișier. Acum trebuie să adăugăm procesarea acestui dialog prin utilizarea $ Window-> execute_open_file ($ text, calea $, $ btn_text, $ exact = true, fir $ = false). Din păcate, nu există o descriere a acestei funcții pe humanemulator.net. Prin urmare, descriem parametrii care trebuie transmiși funcției: $ text este titlul dialogului în întregime sau parțial; $ Path - calea către una sau mai multe imagini, dacă treci fotografii, atunci acestea ar trebui să fie în ghilimele și separate printr-un spațiu - „c: \\ Picture1.jpg“ „c: \\ picture2.jpg“ „c: \\ picture3 .jpg ", etc; $ btn_text - textul butonului pentru care trebuie să faceți clic, iar acest text trebuie să se potrivească în întregime cu textul din fereastra cu butoane. Asta este, dacă facem clic pe alt, vedem o scrisoare subliniată, apoi înainte de această scrisoare există un simbol . Deci, în cazul nostru, textul butonului va fi Deschide-l. $ exact - indică dacă titlul dialogului este specificat integral sau parțial. Implicit, acest parametru este adevărat, adică corespondența strictă a parametrului text $ cu antetul dialogului. $ thread - ultimul parametru indică dacă se va executa această funcție într-un fir separat sau nu. Ce înseamnă asta? Dialogurile pot fi modale și nemodificate. Modal dialog blochează toate celelalte ferestre ale aplicației astfel încât utilizatorul să nu poată face nimic cu ele până când închide dialogul. Un dialog non-modal este mai mult ca o fereastră normală, deoarece permite accesul utilizatorului la restul ferestrelor aplicației. Cel mai simplu mod de a determina modal sau nu dialog modal este deschis-o și faceți clic pe orice altă fereastră când vom auzi sunetul bip, acesta este un dialog modal, dar dacă ne-am dus la fereastră, atunci dialogul nu este modal. În cazul dialogului modal, parametrul thread trebuie să fie adevărat și trebuie să fie apelată funcția execute_open_file înainte de a da clic pe elementul care deschide dialogul de selectare a fișierului. Pentru un dialog nemodal, thread = false, iar funcția poate fi apelată după ce apare dialogul.
Pe emarket.ua, precum și pe cele mai multe panouri, se utilizează un dialog modal, adică blochează accesul la toate celelalte ferestre ale programului. Scenariul va fi:
Asta e gata. Dar această metodă are dezavantajele sale. Când se utilizează un script cu acest cod într-o situație cu mai multe fire, poate apărea o situație când un script introduce fișiere într-o casetă de dialog deschisă de un alt script. Dacă fișierele sunt aceleași, atunci nu este înfricoșător, dar dacă nu, nu mai este bine. Puteți scrie, bineînțeles, un cod care va verifica dacă în acest moment scriptul procesează acest dialog sau nu, dar este mai bine să urmați calea utilizării direct a câmpului prin funcțiile set_value_by_ *. Procesarea încărcărilor de fișiere în acest fel va fi mai ușoară și mai rapidă. În cele mai recente versiuni ale programului, această problemă este rezolvată și acum fiecare copie funcționează cu dialogul său deschis.
Pentru această placă, puteți rezolva acest lucru făcând clic pe link-ul cu textul "formă simplă de încărcare a fotografiilor". După ce faceți clic pe acest link, sunt afișate câmpurile pentru introducerea căii către fișierul care urmează să fie descărcat. Și în acest caz, scenariul va fi:
Din practica scrierii de scripturi, există momente când $ inputfile-> set_value_by_name trebuie să fie apelat de două ori altfel nu umple câmpul. Sau dacă câmpul este în formă, atunci este posibil ca acesta să nu afișeze textul în câmpul de pe site, dar cu formularul care trimite această cale va trece. De asemenea, puteți găsi obiecte ascunse , în care adăugați calea pe care o introduceți prin scriptul java și încercați să adăugați calea către fișier direct acestui element, chiar dacă acesta nu este vizibil pe pagină. De asemenea, este necesar să se acorde atenție faptului că atunci când adăugați calea către formatul de fișier trebuie să fie respectat modul, adică, calea trebuie să înceapă cu o unitate, de exemplu: C: \\, în caz contrar, textul nu poate fi introdusă în domeniu.
Mai jos sunt exemple de scripturi pentru lucrul cu plăci și partajarea de fișiere, pentru care trebuie să descărcați două imagini din dosarul specificat. În acest caz, puteți utiliza atât lucrarea prin dialogurile de selectare a fișierului, cât și prin stabilirea valorii câmpului pentru introducerea căii în fișier.
Scriptul de adăugare a mai multor fișiere la emarket.ua
Script pentru a adăuga mai mult de un fișier la ria.ua
Script pentru a adăuga mai multe fișiere la depositfiles.com
Un exemplu de încărcare a unei fotografii într-una din placi utilizând funcția set_value_by_name
Scripturi scrise în XHE 4.4.19 MT.