handling web tables frames
I den senaste Selenium WebDriver-självstudien lärde vi oss vanligt och rutinmässigt använda Selenium WebDriver-kommandon inklusive viktiga ämnen som hantering av iframe och undantag i Selen-skript.
Gå vidare i vårt omfattande serie handledning om Selen , i denna handledning skulle vi diskutera om hantering av webbtabeller, iframe och dynamiska element som är en väsentlig del av alla webbprojekt.
Denna handledning består av 3 olika ämnen och deras hanteringsmekanismer i selenskript.
- Webbtabeller / HTML-tabeller
- Ramar
- Dynamiska element
Vad du kommer att lära dig:
# 1) Webbtabeller / HTML-tabeller
I den här modulen lär vi oss om webbtabellerna eller HTML-tabellerna på en webbsida, taggar som är tillgängliga i HTML och hur man hanterar webbtabeller dynamiskt.
Webbtabeller är i grunden en grupp av element som logiskt lagras i rad- och kolumnformat. Den används för att organisera liknande information på en webbsida.
Nedan är ett exempel på HTML-tabell:
Nedan är HTML-strukturen i en HTML-tabell:
Nedanstående taggar definieras vanligtvis i html-tabeller:
1.'table-tagg definierar HTML-tabell.
2.'tbody-taggen definierar en behållare för rader och kolumner.
3.'tr 'definierar rader i en HTML-tabell.
4.'td '/' th 'definierar kolumnen i en HTML-tabell.
Hitta detaljerna i en webbtabell:
Det finns många sätt att hantera en webbtabell.
hur man hanterar svåra situationer på jobbet
Tillvägagångssätt # 1 :
Nedan visas xpath för en av cellerna i HTML-tabellen. Låt oss säga 'förnamn'
// div (@ id = ’main’) / tabell (1) / tbody / tr (1) / th (1)
tr (1) definierar första raden och th (1) definierar första kolumnen.
Om ett antal rader och kolumner alltid är konstanta, låt oss säga att vår HTML-tabell alltid kommer att ha 5 rader och 3 kolumner.
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+”)”))); } }
Förutom rad- och kolumnnummer förblir varje komponent i XPath densamma. Så du kan itera med 'for loop' för varje rad och kolumn som nämnts ovan.
Metod 2 :
Det första tillvägagångssättet passar bäst för bordet som inte ändrar dess mått och alltid förblir detsamma. Ovanstående tillvägagångssätt kommer inte att vara en perfekt lösning för dynamiskt byta webbtabeller.
Låt oss ta ovanstående HTML-tabell som ett exempel:
WebElement htmltable=driver.findElement(By.xpath('//*(@id='main')/table(1)/tbody')); List rows=htmltable.findElements(By.tagName('tr')); for(int rnum=0;rnum Steg 1 : Hämta först hela HTML-tabellen och lagra den i en variabel 'htmltable' av typen webbelement.
Steg 2 : Skaffa alla rader med taggnamn 'tr' och lagra alla element i en lista med webbelement. Nu lagras alla element med taggen 'tr' i listan 'rader'.
Steg 3 : Bläddra igenom varje rad och få en lista över element med taggen 'Th'. 'Rader.get (0)' ger första raden och ‘FindElements (By.tagName ( 'Th' )) ' ger en lista med kolumner för raden.
Steg 4 : Iterera med ‘Column.getsize ()’ och få information om varje cell.
Notera : Ovanstående tillvägagångssätt är bäst lämpligt om tabellens dimensioner förändras dynamiskt.
Detta avslutar ämnet hur man hanterar webbtabeller i selen. Därefter lär vi oss att hantera ett element inuti en ram.
# 2) Ramar
I det här avsnittet lär vi oss om ramarna på en webbsida och hur man identifierar ramarna. Vi kommer också att ta reda på hur vi kan hantera en ram i Selenium WebDriver.
Många utvecklare gillar att placera element inuti en ram. Ramen är precis som en behållare där få element kan grupperas.
Identifiering av en ram:
Olika sätt att veta om elementet finns i en ram eller inte
# 1 . Högerklicka på elementet. Kontrollera om alternativet “Denna ram” är tillgängligt. Om det här ramalternativet är tillgängligt betyder det att elementet är inne i en ram.
# 2 . Visa webbsidans sidkälla och kontrollera om någon tagg är tillgänglig för 'iframe'.
api test intervju frågor och svar

Verifiera antalet bilder på en webbsida :
Alla ramar har taggnamnet som “iframe”.
List frameList = driver.findElements (By.tagName ( 'Iframe' ));
System.out.println (frameList.size ());
I ovanstående exempel : ramlista kommer att ha hela listan med ramar och frameList.size () ger antalet bilder.
Hantering av ett element inuti ramen:
Om ett element är inne i en ram måste kontrollen byta till ram först och sedan börja arbeta på elementen.
Steg 1 : För att växla inuti en ram:
driver.switchTo (). ram (1); // skicka ramnummer som parameter.
eller
driver.switchTo (). ram ('ramnamn'); // skicka ramnamn som parameter.
eller
driver.switchTo (). frame (“xpath of the frame”);
Steg 2 : Efter att ha bytt inuti en ram kommer selen att kunna fungera på element.
driver.findElement ( // *******************************************);
driver.findElement ( // *******************************************);
Här har vi lärt oss hur man hanterar ett element inuti ramen och nästa kommer vi att beskriva de olika sätten att hantera dynamiskt element.
# 3) Dynamiska element
I det här avsnittet lär vi oss olika sätt att hantera dynamiska element och konstruera generisk Xpath.
I få scenarier ändras elementattribut dynamiskt. Det kan vara 'id', 'namn' etc.
Exempel : låt oss säga att 'id' för ett användarnamnfält är 'användarnamn_123' och XPath kommer att vara det
// * (@ id = ’användarnamn_123 ′) men när du öppnar sidan igen kan 'id' i 'användarnamn' -fältet ha ändrats och det nya värdet kan vara 'användarnamn_234'.
agil scrum metodologi intervju frågor svar
I det här fallet misslyckas testet eftersom selen inte kunde hitta den XPath du har passerat tidigare eftersom fältets id har ändrats till något annat värde.
Det finns många tillvägagångssätt beroende på vilken typ av problem:
Problem typ 1: Om en del av attributvärdet ändras .
Exempel : Som i exemplet ovan ändras id-värdet men få fält förblir konstanta.
'Användarnamn_123' ändrades till 'användarnamn_234' men 'användarnamn' förblev alltid konstant.
Du kan konstruera xpath enligt nedan:
driver.findElement (By.xpath ( '// * (innehåller (@ id, 'användarnamn'))' sendKeys ( 'Användarnamn' );
förare . findElement (By.xpath ( '// * (börjar med (@ id, 'användare'))' sendKeys ( 'Användarnamn' );
”Innehåller” är en java-metod som kontrollerar om id innehåller substring-användarnamnet.
börjar med() kontrollerar om något attribut börjar med “användare”.
Problem typ 2: Om hela värdet på attributet ändras dynamiskt.
Återigen, i det här fallet kan det finnas olika tillvägagångssätt:
Till exempel : om id för 'inloggningsfältet' ändras dynamiskt och det inte finns något konstant värde att använda innehåller metoden.
Lösning : Användning av sendKeys.
Selen tillhandahåller olika API för att använda funktionstangenter. Till exempel tabbtangent, ange nycklar, F5 etc.
Steg 1 : Skriv in lösenord
driver.findElement (By.id ( 'Lösenord' sendKeys (“lösenord”));
Steg 2 : Använd nyckelfunktioner för att navigera till elementet.
driver.findElement (By.id ( 'Lösenord' sendKeys (Keys. STIGA PÅ ));
eller
driver.findElement (By.id ( 'Lösenord' sendKeys (Keys. FLIK ));
Slutsats
Webbtabeller, ramar och dynamiska element är en viktig del av alla webbprojekt. Det är alltid önskvärt att skriva effektiv kod för att hantera webbtabeller och dynamiska element.
Förstå konstruktionen av generiska XPath vilket är till stor hjälp vid hantering av dynamiska element. I händelse av en ram måste ditt skript byta ram och sedan använda elementet.
Nästa handledning # 19 : I nästa Selen-handledning lär vi oss om typer av undantag och hur man hanterar undantag i Java i Selen-manus.
Vänligen posta dina frågor relaterade till webbtabeller, ramar och hanteringsdynamiska element om du har några.
Rekommenderad läsning
- Hur man hittar element i Chrome- och IE-webbläsare för att bygga selen-skript - Selen-handledning # 7
- Användning av Selen Select Class för hantering av rullgardinselement på en webbsida - Selen Tutorial # 13
- Selen Locators: Identifiera webbelement med XPath i Selen (exempel)
- Hur man använder CSS Selector för att identifiera webbelement för selen-skript - Selen-handledning nr 6
- Kontrollera synligheten för webbelement med olika typer av WebDriver-kommandon - Selen Tutorial # 14
- Gurka Selen Tutorial: Gurka Java Selen WebDriver Integration
- Integration av selen med JMeter
- Hantering av iFrames med Selenium WebDriver switchTo () -metod