handling web tables frames
I sidste Selenium WebDriver-tutorial lærte vi forskellige almindeligt og rutinemæssigt brugte Selenium WebDriver-kommandoer herunder vigtige emner som håndtering af iframe og undtagelser i Selenium-scripts.
Gå videre i vores omfattende serie af tutorials om selen , i denne vejledning vil vi diskutere om håndtering af webtabeller, iframe og dynamiske elementer som er en væsentlig del af ethvert webprojekt.
Denne tutorial består af 3 forskellige emner og deres håndteringsmekanismer i selen-script.
- Webtabeller / HTML-tabeller
- Rammer
- Dynamiske elementer
Hvad du lærer:
# 1) Webtabeller / HTML-tabeller
I dette modul lærer vi om webtabellerne eller HTML-tabellerne på en webside, de tilgængelige tags i HTML og hvordan man håndterer webtabellerne dynamisk.
Webtabeller er dybest set en gruppe af elementer, der logisk gemmes i række- og kolonneformat. Det bruges til at organisere lignende oplysninger på en webside.
Nedenfor er et eksempel på HTML-tabel:
Nedenfor er uddraget af HTML-struktur i en HTML-tabel:
Nedenstående tags er generelt defineret i html-tabeller:
1.'table 'tag definerer HTML-tabel.
2.'tbody-tag definerer en container til rækker og kolonner.
3.'tr 'definerer rækker i en HTML-tabel.
4.'td '/' th 'definer kolonnen i en HTML-tabel.
Find detaljerne i en webtabel:
Der er mange måder, vi kan håndtere en webtabel på.
eksempel på abstrakt interface i java
Tilgang # 1 :
Nedenfor er xpath af en af cellerne i html-tabellen. Lad os sige 'fornavn'
// div (@ id = ’main’) / tabel (1) / tbody / tr (1) / th (1)
tr (1) definerer første række og th (1) definerer første kolonne.
Hvis et antal rækker og kolonner altid er konstante, lad os sige, at vores HTML-tabel altid vil have 5 rækker og 3 kolonner.
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+”)”))); } }
Bortset fra række- og søjlenummer forbliver hver komponent i XPath den samme. Så du kan gentage ved hjælp af 'for loop' for hver række og kolonne som nævnt ovenfor.
Tilgang # 2 :
Den første tilgang er bedst egnet til bordet, der ikke ændrer dens dimensioner og altid forbliver den samme. Ovenstående tilgang vil ikke være en perfekt løsning til dynamisk skift af webtabeller.
Lad os tage ovenstående HTML-tabel som et eksempel:
WebElement htmltable=driver.findElement(By.xpath('//*(@id='main')/table(1)/tbody')); List rows=htmltable.findElements(By.tagName('tr')); for(int rnum=0;rnum Trin 1 : Få først hele HTML-tabellen, og gem den i en variabel 'htmltable' af typen webelement.
Trin 2 : Få alle rækkerne med tagnavnet “tr”, og gem alle elementerne i en liste over webelementer. Nu er alle elementerne med tag 'tr' gemt i listen 'rækker'.
Trin 3 : Gennemse hver række og få listen over elementer med tag 'Th'. ‘Rækker.get (0)’ vil give første række og ‘FindElements (By.tagName ( 'Th' )) ' vil give en liste over kolonner til rækken.
Trin 4 : Iterat brug ‘Søjler.getsize ()’ og få detaljerne i hver celle.
Bemærk : Ovenstående tilgang vil være bedst egnet, hvis borddimensionerne ændres dynamisk.
Dette afslutter emnet, hvordan man håndterer webtabeller i selen. Derefter lærer vi om håndtering af et element inde i en ramme.
# 2) Rammer
I dette afsnit lærer vi om rammerne på en webside og hvordan man identificerer rammerne. Vi finder også ud af, hvordan vi kan håndtere en ramme i Selenium WebDriver.
Mange udviklere kan lide at placere elementer inde i en ramme. Rammen er ligesom en container, hvor få elementer kan grupperes.
Identifikation af en ramme:
Forskellige måder at vide, om elementet er til stede inde i en ramme eller ej
# 1 . Højreklik på elementet. Kontroller, om “Denne ramme” er tilgængelig. Hvis denne rammemulighed er tilgængelig, betyder det, at elementet er inde i en ramme.
# 2 . Se websidekilden for websiden, og kontroller, om et tag er tilgængeligt for 'iframe'.
find kommando i unix med eksempler

Bekræft antal rammer på en webside :
Alle rammer har tagnavnet som “iframe”.
List frameList = driver.findElements (By.tagName ( 'Iframe' ));
System.out.println (frameList.size ());
I ovenstående eksempel : frameList vil have hele listen over rammer og frameList.size () angiver antallet af rammer.
Håndtering af et element inden i rammen:
Hvis et element er inde i en ramme, skal kontrol først skifte til ramme og derefter begynde at arbejde på elementerne.
Trin 1 : Sådan skifter du inden i en ramme:
driver.switchTo (). ramme (1); // videregive rammenummer som parameter.
eller
driver.switchTo (). frame (“frame Name”); // videregive rammenavn som parameter.
eller
driver.switchTo (). frame (“xpath of the frame”);
Trin 2 : Efter skift inde i en ramme vil selen kunne fungere på elementer.
driver.findElement ( // *******************************************);
driver.findElement ( // ******************************************);
Her har vi lært, hvordan man håndterer et element inden i rammen, og derefter vil vi dække de forskellige måder at håndtere dynamisk element på.
# 3) Dynamiske elementer
I dette afsnit lærer vi forskellige måder at håndtere dynamisk element og konstruere generisk Xpath på.
I få scenarier ændres elementattributter dynamisk. Det kan være 'id', 'navn' osv.
Eksempel : Lad os sige 'id' i et brugernavn felt er 'brugernavn_123' og XPath vil være
// * (@ id = ’brugernavn_123 ′) men når du åbner siden igen, kan 'id' i 'brugernavn' have ændret sig, og den nye værdi kan være 'brugernavn_234'.
I dette tilfælde mislykkes testen, fordi selen ikke kunne finde den XPath, du har bestået tidligere, da id'et for feltet er ændret til en anden værdi.
Der er mange tilgange afhængigt af typen af problem:
Problem Type 1: Hvis en del af attributværdien ændres .
Eksempel : Som i ovenstående eksempel ændres id-værdien, men få felter forbliver konstante.
'Brugernavn_123' ændret til 'brugernavn_234', men 'brugernavn' forblev altid konstant.
Du kan konstruere xpath som nedenfor:
driver.findElement (By.xpath ( '// * (indeholder (@ id, 'brugernavn'))' sendKeys ( “Brugernavn” );
chauffør . findElement (By.xpath ( '// * (starter med (@ id, 'bruger'))' sendKeys ( “Brugernavn” );
'indeholder' er en java-metode, der kontrollerer, om id indeholder substring-brugernavnet.
starter med () kontrollerer, om nogen attribut starter med 'bruger'.
Problem Type 2: Hvis hele værdien af attributten ændres dynamisk.
selen med c # interviewspørgsmål
I dette tilfælde kunne der være forskellige tilgange:
For eksempel : hvis id for 'login' felt ændres dynamisk, og der ikke er nogen konstant værdi at bruge indeholder metoden.
Opløsning : Brug af sendKeys.
Selen leverer forskellige API'er til brug af funktionstaster. For eksempel fanetast, indtast nøgler, F5 osv.
Trin 1 : Indtast adgangskode
driver.findElement (By.id ( 'adgangskode' sendKeys (“adgangskode”));
Trin 2 : Brug nøglefunktioner til at navigere til elementet.
driver.findElement (By.id ( 'adgangskode' sendKeys (nøgler. GÅ IND ));
eller
driver.findElement (By.id ( 'adgangskode' sendKeys (nøgler. TAB ));
Konklusion
Webtabeller, rammer og dynamiske elementer er vigtig del af ethvert webprojekt. Det er altid ønskeligt at skrive effektiv kode til håndtering af webtabeller og dynamiske elementer.
Forståelse af konstruktionen af generisk XPath, hvilket er meget nyttigt under håndtering af dynamiske elementer. I tilfælde af en ramme skal dit script skifte ramme og derefter fungere på elementet.
Næste tutorial # 19 : I næste Selen-tutorial lærer vi om typer af undtagelser og hvordan man håndterer undtagelser i java i Selenium-scripts.
Venligst post dine forespørgsler relateret til webtabeller, rammer og håndtering af dynamisk element, hvis du har nogen.
Anbefalet læsning
- Sådan finder du elementer i Chrome og IE-browsere til opbygning af selen-scripts - Selen Tutorial # 7
- Brug af Selen Select Class til håndtering af dropdown-elementer på en webside - Selen Tutorial # 13
- Selen Locators: Identificer webelementer ved hjælp af XPath i Selen (eksempler)
- Sådan bruges CSS Selector til identifikation af webelementer til selen-scripts - Selen Tutorial # 6
- Kontroller synligheden af webelementer ved hjælp af forskellige typer WebDriver-kommandoer - Selen-vejledning nr. 14
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- Integration af selen med JMeter
- Håndtering af iFrames ved hjælp af Selen WebDriver switchTo () -metoden