handling web tables frames
U prošlom vodiču za Selenium WebDriver naučili smo razne uobičajene i rutinski korištene naredbe Selenium WebDriver uključujući važne teme poput rukovanja iframe-om i iznimkama u selenijevim skriptama.
Krećemo naprijed u našem sveobuhvatnom niz tutorijala o selenu , u ovom vodiču o kojem bismo razgovarali rukovanje web tablicama, iframe i dinamičkim elementima koji su bitan dio bilo kojeg web projekta.
Ovaj se vodič sastoji od 3 različite teme i mehanizama rukovanja u skriptama selena.
- Web tablice / HTML tablice
- Okviri
- Dinamički elementi
Što ćete naučiti:
- # 1) Web tablice / HTML tablice
- # 2) Okviri
- # 3) Dinamični elementi
- Zaključak
- Preporučena literatura
# 1) Web tablice / HTML tablice
U ovom ćemo modulu naučiti o web tablicama ili HTML tablicama na web stranici, oznakama dostupnim u HTML-u i načinu dinamičkog rukovanja web tablicama.
Web tablice u osnovi su skupina elemenata koji su logično pohranjeni u formatu redaka i stupaca. Koristi se za organiziranje sličnih podataka na web stranici.
Ispod je primjer Html tablice:
Ispod je isječak HTML strukture HTML tablice:
Ispod su oznake općenito definirane u html tablicama:
Oznaka 1.’table definira HTML tablicu.
2.'tbody 'oznaka definira spremnik za retke i stupce.
3.'tr ’definira retke u HTML tablici.
4.'td / th th definirati stupac HTML tablice.
Pronađite detalje web tablice:
Postoji mnogo načina na koje možemo upravljati web tablicom.
kopiraj niz u drugi niz Java
Pristup br. 1 :
Ispod je xpath jedne od ćelija u html tablici. Recimo 'ime'
// div (@ id = ’main’) / table (1) / tbody / tr (1) / th (1)
tr (1) definira prvi redak, a th (1) definira prvi stupac.
Ako je broj redaka i stupaca uvijek konstantan, recimo da će naša HTML tablica uvijek imati 5 redaka i 3 stupca.
for(int numberOfRows=1; numberOfRows<=5; numberOfRows++) { for(int numberOfCol=1; numberOfCol <=3; numberOfCol++) { System.out.println(driver.findElement(By.xpath (“//div(@id='main')/table(1)/tbody/tr (“+numberOfRows+”)/th(“+numberOfCol+”)”))); } }
Osim broja retka i stupca, svaka komponenta XPath-a ostaje ista. Tako možete ponoviti postupak pomoću for for za svaki redak i stupac kao što je gore spomenuto.
Pristup br. 2 :
Prvi pristup je najprikladniji za stol koji ne mijenja svoje dimenzije i uvijek ostaje isti. Gore navedeni pristup neće biti savršeno rješenje za dinamičke promjene web tablica.
Uzmimo za primjer gornju HTML tablicu:
WebElement htmltable=driver.findElement(By.xpath('//*(@id='main')/table(1)/tbody')); List rows=htmltable.findElements(By.tagName('tr')); for(int rnum=0;rnum Korak 1 : Prvo nabavite cijelu HTML tablicu i spremite je u varijablu 'htmltable' tipa web element.
Korak 2 : Dohvatite sve retke s nazivom oznake 'tr' i spremite sve elemente na popis web elemenata. Sada su svi elementi s oznakom 'tr' pohranjeni na popisu 'redovi'.
3. korak : Prelistajte svaki redak i dobijte popis elemenata s oznakom ‘Th’. 'Redovi.get (0)' dat će prvi red i 'FindElements (By.tagName ( 'Th' )) ' dat će popis stupaca za redak.
4. korak : Ponovno korištenje ‘Stupci.getsize ()’ i dobiti pojedinosti o svakoj ćeliji.
Bilješka : Gornji pristup najbolje će odgovarati ako se dimenzije tablice dinamički mijenjaju.
Ovim se završava tema o rukovanju web tablicama u selenu. Dalje ćemo naučiti rukovanje elementom unutar okvira.
# 2) Okviri
U ovom ćemo odjeljku naučiti o okvirima na web stranici i kako prepoznati okvire. Također ćemo saznati kako možemo rukovati okvirom u programu Selenium WebDriver.
Mnogi programeri vole postavljati elemente unutar okvira. Okvir je baš poput spremnika u kojem se može grupirati nekoliko elemenata.
Identifikacija okvira:
Različiti načini da se zna je li element prisutan u okviru ili ne
#jedan . Desnom tipkom miša kliknite element. Provjerite je li dostupna opcija 'Ovaj okvir'. Ako je dostupna ova opcija okvira, to znači da je element unutar okvira.
#dva . Pogledajte izvor stranice web stranice i provjerite je li dostupna bilo koja oznaka za 'iframe'.
kako programirati za početnike
Provjeri broj okvira na web stranici :
Svi okviri imaju naziv oznake kao 'iframe'.
Popis frameList = driver.findElements (By.tagName ( 'Iframe' ));
System.out.println (frameList.size ());
U gornjem primjeru : frameList imat će sav popis okvira i frameList.size () dat će broj okvira.
Rukovanje elementom unutar okvira:
Ako je element unutar okvira, tada se kontrola mora prvo prebaciti na okvir, a zatim početi raditi na elementima.
Korak 1 : Za prebacivanje unutar okvira:
driver.switchTo (). frame (1); // prosljeđivanje broja okvira kao parametra.
ili
driver.switchTo (). frame („naziv okvira“); // prosljeđivanje naziva okvira kao parametra.
ili
driver.switchTo (). frame (“xpath of the frame”);
Korak 2 : Nakon prebacivanja unutar okvira, selen će moći djelovati na elemente.
driver.findElement ( // ************************************************** ******);
driver.findElement ( // ***********************************************) ;
Ovdje smo naučili kako se rukuje elementom unutar okvira, a zatim ćemo objasniti različite načine rukovanja dinamičkim elementom.
# 3) Dinamični elementi
U ovom ćemo odjeljku naučiti različite načine rukovanja dinamičkim elementima i konstruiranja generičkog Xpatha.
U nekoliko se scenarija atributi elemenata dinamički mijenjaju. To može biti ‘id’, ‘ime’ itd.
Primjer : recimo da je 'id' polja korisničkog imena 'username_123' i XPath će biti
// * (@ id = ’korisničko ime_123 ′) ali kad ponovo otvorite stranicu, polje 'id' polja 'korisničko ime' moglo se promijeniti i nova vrijednost može biti 'username_234'.
U ovom slučaju, test neće uspjeti jer selen nije mogao pronaći XPath koji ste ranije prošli jer se ID polja promijenio u neku drugu vrijednost.
Ovisno o vrsti problema postoji mnogo pristupa:
Tip problema 1: Ako se dio vrijednosti atributa promijeni .
Primjer : Kao u gornjem primjeru, vrijednost id se mijenja, ali malo polja ostaje konstantno.
'Korisničko ime_123' promijenjeno je u 'korisničko ime_234', ali 'korisničko ime' uvijek je ostalo konstantno.
Možete konstruirati xpath kao dolje:
driver.findElement (By.xpath ( '// * (sadrži (@ id, 'korisničko ime'))' )). sendKeys ( 'Korisničko ime' );
vozač . findElement (By.xpath ( '// * (započinje s (@ id, 'korisnik'))' )). sendKeys ( 'Korisničko ime' );
‘Sadrži’ je java metoda koja provjerava sadrži li id korisničko ime podniza.
počinje sa() provjerava započinje li bilo koji atribut s 'korisnik'.
Tip problema 2: Ako se cjelokupna vrijednost atributa dinamički mijenja.
Opet, u ovom slučaju mogu postojati različiti pristupi:
Na primjer : ako se id polja 'prijava' dinamički promijeni i ne postoji konstantna vrijednost za upotrebu sadrži metodu.
koja se vrsta testa koristi za provjeru ispravnosti svih programa u aplikaciji
Riješenje : Upotreba sendKeys.
Selenium nudi različite API-je za upotrebu funkcijskih tipki. Na primjer tipka kartice, tipke enter, F5 itd.
Korak 1 : Upišite lozinku
driver.findElement (By.id ( 'zaporka' )). sendKeys (“lozinka”));
Korak 2 : Koristite ključne funkcije za navigaciju do elementa.
driver.findElement (By.id ( 'zaporka' )). sendKeys (Tipke. UNESI ));
ili
driver.findElement (By.id ( 'zaporka' )). sendKeys (Tipke. TAB ));
Zaključak
Web tablice, okviri i dinamički elementi bitni su dio svakog web projekta. Uvijek je poželjno napisati učinkovit kôd za rukovanje web tablicama i dinamičkim elementima.
Razumijevanje konstrukcije generičkog XPath-a što je vrlo korisno prilikom rukovanja dinamičkim elementima. U slučaju okvira, vaša skripta mora prebaciti okvir i zatim djelovati na elementu.
Sljedeći vodič # 19 : U sljedećem tutorijalu o selenu naučit ćemo o vrstama iznimaka i načinu postupanja s izuzecima u javi u skriptama Selenium.
Pošaljite svoje upite vezane za web tablice, okvire i rukovanje dinamičkim elementima ako ih imate.
Preporučena literatura
- Kako pronaći elemente u preglednicima Chrome i IE za izgradnju skripti za selen - Vodič za selenij br. 7
- Korištenje selenijske klase za rukovanje padajućim elementima na web stranici - Vodič za selenij br. 13
- Lokatori selena: prepoznavanje web elemenata pomoću XPath-a u selenu (primjeri)
- Kako koristiti CSS Selector za prepoznavanje web elemenata za skripte za selen - Vodič za selen br. 6
- Provjerite vidljivost web elemenata pomoću različitih vrsta naredbi WebDriver - Vodič za selenij # 14
- Vodič za selenij krastavaca: Integracija Java Selenium WebDriver za krastavac
- Integracija selena s JMeterom
- Rukovanje iFramovima pomoću metode Selenium WebDriver switchTo ()