handling web tables frames
Im letzten Selenium WebDriver-Tutorial haben wir verschiedene häufig und häufig gelernt routinemäßig verwendete Selenium WebDriver-Befehle einschließlich wichtiger Themen wie der Behandlung von Iframe und Ausnahmen in Selenium-Skripten.
Weiter in unserem umfassenden Reihe von Tutorials zu Selen In diesem Tutorial würden wir darüber diskutieren Umgang mit Webtabellen, Iframe und dynamischen Elementen die ein wesentlicher Bestandteil jedes Webprojekts sind.
Dieses Tutorial besteht aus 3 verschiedenen Themen und deren Handhabungsmechanismen in Selenskript.
- Webtabellen / HTML-Tabellen
- Rahmen
- Dynamische Elemente
Was du lernen wirst:
# 1) Webtabellen / HTML-Tabellen
In diesem Modul lernen wir die Web-Tabellen oder HTML-Tabellen auf einer Webseite, die in HTML verfügbaren Tags und den dynamischen Umgang mit Web-Tabellen kennen.
Webtabellen sind im Grunde eine Gruppe von Elementen, die logisch in einem Zeilen- und Spaltenformat gespeichert werden. Es wird verwendet, um ähnliche Informationen auf einer Webseite zu organisieren.
Unten finden Sie ein Beispiel für eine HTML-Tabelle:
Unten finden Sie einen Ausschnitt aus der HTML-Struktur einer HTML-Tabelle:
Die folgenden Tags werden im Allgemeinen in HTML-Tabellen definiert:
Das Tag '’table 'definiert die HTML-Tabelle.
2.’tbody ’-Tag definiert einen Container für Zeilen und Spalten.
3.’tr ’definiert Zeilen in einer HTML-Tabelle.
4.'td ’/’ th ’definiert die Spalte einer HTML-Tabelle.
Finden Sie die Details einer Webtabelle:
Es gibt viele Möglichkeiten, wie wir mit einer Webtabelle umgehen können.
Apps zum Konvertieren von YouTube-Videos in MP3
Ansatz Nr. 1 ::
Unten ist der xpath einer der Zellen in der HTML-Tabelle. Sagen wir 'Vorname'
// div (@ id = ’main’) / table (1) / tbody / tr (1) / th (1)
tr (1) definiert die erste Zeile und th (1) definiert die erste Spalte.
Wenn eine Anzahl von Zeilen und Spalten immer konstant ist, hat unsere HTML-Tabelle immer 5 Zeilen und 3 Spalten.
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+”)”))); } }
Mit Ausnahme der Zeilen- und Spaltennummer bleibt jede Komponente von XPath gleich. Sie können also wie oben erwähnt für jede Zeile und Spalte mit „for loop“ iterieren.
Ansatz Nr. 2 ::
Der erste Ansatz eignet sich am besten für den Tisch, der seine Abmessungen nicht ändert und immer gleich bleibt. Der obige Ansatz ist keine perfekte Lösung für die dynamische Änderung von Webtabellen.
Nehmen wir als Beispiel die obige HTML-Tabelle:
WebElement htmltable=driver.findElement(By.xpath('//*(@id='main')/table(1)/tbody')); List rows=htmltable.findElements(By.tagName('tr')); for(int rnum=0;rnum Schritt 1 : Holen Sie sich zuerst die gesamte HTML-Tabelle und speichern Sie diese in einer Variablen vom Typ 'htmltable' vom Typ web element.
Schritt 2 : Holen Sie sich alle Zeilen mit dem Tag-Namen 'tr' und speichern Sie alle Elemente in einer Liste von Webelementen. Jetzt werden alle Elemente mit dem Tag 'tr' in der Liste 'Zeilen' gespeichert.
Schritt 3 : Durchlaufen Sie jede Zeile und erhalten Sie die Liste der Elemente mit Tag 'Th'. ‘Rows.get (0)’ wird erste Reihe geben und ‘FindElements (By.tagName ( 'Th' )) ' gibt eine Liste der Spalten für die Zeile.
Schritt 4 : Iterieren mit ‘Columns.getsize ()’ und erhalten Sie die Details jeder Zelle.
Hinweis : Der obige Ansatz ist am besten geeignet, wenn sich die Tabellenabmessungen dynamisch ändern.
Damit ist das Thema zum Umgang mit Webtabellen in Selen abgeschlossen. Als nächstes lernen wir den Umgang mit einem Element innerhalb eines Rahmens.
# 2) Rahmen
In diesem Abschnitt erfahren Sie mehr über die Frames auf einer Webseite und wie Sie die Frames identifizieren. Außerdem erfahren wir, wie wir mit einem Frame in Selenium WebDriver umgehen können.
Viele Entwickler platzieren Elemente gerne in einem Frame. Der Rahmen ist wie ein Container, in dem nur wenige Elemente gruppiert werden können.
Identifizierung eines Rahmens:
Verschiedene Möglichkeiten, um festzustellen, ob das Element in einem Rahmen vorhanden ist oder nicht
# 1 . Klicken Sie mit der rechten Maustaste auf das Element. Überprüfen Sie, ob die Option 'Dieser Rahmen' verfügbar ist. Wenn diese Rahmenoption verfügbar ist, bedeutet dies, dass sich das Element innerhalb eines Rahmens befindet.
# 2 . Zeigen Sie die Seitenquelle der Webseite an und prüfen Sie, ob ein Tag für 'iframe' verfügbar ist.
Testfallformat beim Testen von Software
Überprüfen Sie die Anzahl der Frames auf einer Webseite ::
Alle Frames haben den Tag-Namen 'iframe'.
Liste frameList = driver.findElements (By.tagName ( 'Iframe' ));
System.out.println (frameList.size ());
Im obigen Beispiel :: frameList wird die gesamte Liste der Frames und haben frameList.size () gibt die Anzahl der Frames an.
Umgang mit einem Element im Rahmen:
Befindet sich ein Element innerhalb eines Frames, muss die Steuerung zuerst auf Frame umschalten und dann mit der Bearbeitung der Elemente beginnen.
Schritt 1 : Um innerhalb eines Rahmens zu wechseln:
driver.switchTo (). frame (1); // Frame-Nummer als Parameter übergeben.
oder
driver.switchTo (). frame ('Frame Name'); // Frame-Namen als Parameter übergeben.
oder
driver.switchTo (). frame ('xpath of the frame');
Schritt 2 : Nach dem Umschalten innerhalb eines Rahmens kann Selen Elemente bearbeiten.
driver.findElement ( // *************************************************);
driver.findElement ( // ***********************************************);
Hier haben wir gelernt, wie man mit einem Element innerhalb eines Rahmens umgeht, und als nächstes werden wir die verschiedenen Arten des Umgangs mit dynamischen Elementen behandeln.
# 3) Dynamische Elemente
In diesem Abschnitt lernen wir verschiedene Möglichkeiten, mit dynamischen Elementen umzugehen und generischen Xpath zu erstellen.
In einigen Szenarien ändern sich Elementattribute dynamisch. Es kann 'id', 'name' usw. sein.
Beispiel : Nehmen wir an, 'ID' eines Benutzernamenfelds ist 'Benutzername_123' und der XPath wird sein
// * (@ id = ’username_123 ′) Wenn Sie die Seite jedoch erneut öffnen, hat sich möglicherweise die 'ID' des Felds 'Benutzername' geändert, und der neue Wert lautet möglicherweise 'Benutzername_234'.
In diesem Fall schlägt der Test fehl, da das Selen den zuvor übergebenen XPath nicht finden konnte, da sich die ID des Felds in einen anderen Wert geändert hat.
Je nach Art des Problems gibt es viele Ansätze:
Problemtyp 1:: Wenn sich ein Teil des Attributwerts ändert .
Beispiel : Wie im obigen Beispiel ändert sich der ID-Wert, aber nur wenige Felder bleiben konstant.
'Benutzername_123' wurde in 'Benutzername_234' geändert, aber 'Benutzername' blieb immer konstant.
Sie können xpath wie folgt erstellen:
driver.findElement (By.xpath ( '// * (enthält (@ id,’ Benutzername ’))' )). sendKeys ( 'Nutzername' );
Treiber . findElement (By.xpath ( '// * (beginnt mit (@ id,’ user ’))' )). sendKeys ( 'Nutzername' );
'Enthält' ist eine Java-Methode, die prüft, ob id den Teilstring-Benutzernamen enthält.
beginnt mit() prüft, ob ein Attribut mit 'Benutzer' beginnt.
youtube to mp3 converter hoher Qualität kostenloser Download
Problemtyp 2:: Wenn sich der gesamte Wert des Attributs dynamisch ändert.
Auch in diesem Fall kann es verschiedene Ansätze geben:
Zum Beispiel : Wenn sich die ID des Felds 'Anmelden' dynamisch ändert und kein konstanter Wert zu verwenden ist, enthält die Methode.
Lösung : Verwendung von sendKeys.
Selen bietet verschiedene APIs zur Verwendung von Funktionstasten. Zum Beispiel Tabulatortaste, Eingabetaste, F5 usw.
Schritt 1 : Passwort eingeben
driver.findElement (By.id ( 'Passwort' )). sendKeys ('Passwort'));
Schritt 2 : Verwenden Sie Tastenfunktionen, um zum Element zu navigieren.
driver.findElement (By.id ( 'Passwort' )). sendKeys (Keys. EINGEBEN ));
oder
driver.findElement (By.id ( 'Passwort' )). sendKeys (Keys. TAB ));
Fazit
Webtabellen, Frames und dynamische Elemente sind ein wesentlicher Bestandteil jedes Webprojekts. Es ist immer wünschenswert, effektiven Code für die Verarbeitung von Webtabellen und dynamischen Elementen zu schreiben.
Verständnis der Konstruktion von generischem XPath, das beim Umgang mit dynamischen Elementen sehr hilfreich ist. Im Falle eines Frames muss Ihr Skript den Frame wechseln und dann das Element bearbeiten.
Nächstes Tutorial Nr. 19 : Im nächsten Selenium-Tutorial werden wir lernen Informationen zu Ausnahmetypen und zum Umgang mit Ausnahmen in Java in Selenium-Skripten.
Bitte stellen Sie Ihre Fragen zu Webtabellen, Frames und zur Behandlung dynamischer Elemente, falls vorhanden.
Literatur-Empfehlungen
- So suchen Sie Elemente in Chrome- und IE-Browsern zum Erstellen von Selenium-Skripten - Selenium-Lernprogramm Nr. 7
- Verwendung der Selenium Select-Klasse zur Behandlung von Dropdown-Elementen auf einer Webseite - Selenium Tutorial # 13
- Selen-Locators: Identifizieren von Webelementen mithilfe von XPath in Selen (Beispiele)
- Verwendung von CSS Selector zum Identifizieren von Webelementen für Selenium-Skripte - Selenium Tutorial # 6
- Überprüfen Sie die Sichtbarkeit von Webelementen mithilfe verschiedener Arten von WebDriver-Befehlen - Selenium Tutorial # 14
- Cucumber Selenium Tutorial: Integration von Cucumber Java Selenium WebDriver
- Integration von Selen mit JMeter
- Umgang mit iFrames mit der Selenium WebDriver-Methode switchTo ()