handling web tables frames
W ostatnim samouczku Selenium WebDriver nauczyliśmy się różnych często i rutynowo używane polecenia Selenium WebDriver w tym ważne tematy, takie jak obsługa iframe i wyjątków w skryptach Selenium.
Idąc naprzód w naszym kompleksowym seria samouczków na temat Selenium , w tym samouczku omówimy obsługa tabel WWW, elementów iframe i elementów dynamicznych które są istotną częścią każdego projektu internetowego.
Ten samouczek składa się z 3 różnych tematów i ich mechanizmów obsługi w skrypcie selenowym.
- Tabele internetowe / tabele HTML
- Ramy
- Elementy dynamiczne
Czego się nauczysz:
- # 1) Tabele internetowe / tabele HTML
- # 2) Ramy
- # 3) Elementy dynamiczne
- Wniosek
- rekomendowane lektury
# 1) Tabele internetowe / tabele HTML
W tym module dowiemy się o tabelach internetowych lub tabelach HTML na stronie internetowej, tagach dostępnych w języku HTML oraz o dynamicznej obsłudze tabel internetowych.
Tabele internetowe to w zasadzie grupa elementów, które są logicznie przechowywane w formacie wierszy i kolumn. Służy do organizowania podobnych informacji na stronie internetowej.
Poniżej przykład tabeli HTML:
Poniżej znajduje się fragment struktury HTML tabeli HTML:
Poniższe tagi są ogólnie zdefiniowane w tabelach HTML:
1. notable ”definiuje tabelę HTML.
2. Tag notbody ”definiuje kontener dla wierszy i kolumn.
3. „tr” definiuje wiersze w tabeli HTML.
4. „td ”/„ th ”definiuje kolumnę tabeli HTML.
Znajdź szczegóły tabeli internetowej:
Istnieje wiele sposobów obsługi tabeli internetowej.
Podejście nr 1 :
gdzie znajdę klucz bezpieczeństwa sieci na moim routerze
Poniżej znajduje się ścieżka x jednej z komórek w tabeli html. Powiedzmy „imię”
// div [@ id = ’main’] / table [1] / tbody / tr [1] / th [1]
tr [1] definiuje pierwszy wiersz, a th [1] określa pierwszą kolumnę.
Jeśli liczba wierszy i kolumn jest zawsze stała, powiedzmy, że nasza tabela HTML zawsze będzie miała 5 wierszy i 3 kolumny.
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+”]”))); } }
Z wyjątkiem numeru wiersza i kolumny, każdy składnik XPath pozostaje taki sam. Możesz więc iterować używając „pętli for” dla każdego wiersza i kolumny, jak wspomniano powyżej.
Podejście nr 2 :
Pierwsze podejście najlepiej sprawdza się w przypadku stołu, który nie zmienia swoich wymiarów i zawsze pozostaje taki sam. Powyższe podejście nie będzie idealnym rozwiązaniem dla dynamicznie zmieniających się tabel internetowych.
Weźmy powyższą tabelę HTML jako przykład:
WebElement htmltable=driver.findElement(By.xpath('//*[@id='main']/table[1]/tbody')); List rows=htmltable.findElements(By.tagName('tr')); for(int rnum=0;rnum Krok 1 : Najpierw pobierz całą tabelę HTML i zapisz ją w zmiennej „htmltable” typu web element.
Krok 2 : Pobierz wszystkie wiersze z nazwą tagu „tr” i zapisz wszystkie elementy na liście elementów internetowych. Teraz wszystkie elementy ze znacznikiem „tr” są przechowywane na liście „wierszy”.
Krok 3 : Zapętlaj każdy wiersz i pobierz listę elementów z tagiem „Th”. „Rows.get (0)” da pierwszy wiersz i „FindElements (By.tagName ( „Th” )) ' poda listę kolumn dla wiersza.
Krok 4 : Iteruj używając „Columns.getsize ()” i uzyskaj szczegółowe informacje o każdej komórce.
Uwaga : Powyższe podejście będzie najlepsze, jeśli wymiary tabeli zmieniają się dynamicznie.
Na tym kończy się temat, jak obsługiwać tabele internetowe w selenie. Następnie nauczymy się obsługi elementu wewnątrz ramki.
# 2) Ramy
W tej sekcji dowiemy się o ramkach na stronie internetowej i o tym, jak je identyfikować. Dowiemy się również, jak poradzić sobie z ramką w Selenium WebDriver.
Wielu programistów lubi umieszczać elementy wewnątrz ramki. Ramka jest jak kontener, w którym można pogrupować kilka elementów.
Identyfikacja ramy:
Różne sposoby sprawdzenia, czy element jest obecny w ramce, czy nie
# 1 . Kliknij prawym przyciskiem myszy element. Sprawdź, czy opcja „Ta ramka” jest dostępna. Jeśli opcja Ta ramka jest dostępna, oznacza to, że element znajduje się wewnątrz ramki.
# 2 . Wyświetl źródło strony internetowej i sprawdź, czy jest dostępny jakiś tag dla elementu „iframe”.

skrypt powłoki do porównania dwóch plików
Sprawdź liczbę ramek na stronie internetowej :
Wszystkie ramki mają nazwę tagu „iframe”.
Lista frameList = driver.findElements (By.tagName ( „Iframe” ));
System.out.println (frameList.size ());
W powyższym przykładzie : frameList będzie mieć całą listę ramek i frameList.size () poda liczbę klatek.
Obsługa elementu wewnątrz ramy:
Jeśli element znajduje się wewnątrz ramki, sterowanie musi najpierw przełączyć się na ramkę, a następnie rozpocząć działanie na elementach.
Krok 1 : Aby przełączyć wewnątrz ramki:
driver.switchTo (). frame (1); // przekazanie numeru ramki jako parametru.
lub
driver.switchTo (). frame („Frame Name”); // podaj nazwę ramki jako parametr.
lub
driver.switchTo (). frame („xpath of the frame”);
Krok 2 : Po przełączeniu wewnątrz ramy selen będzie mógł operować na elementach.
driver.findElement ( // ********************************************);
driver.findElement ( // *******************************************);
Tutaj nauczyliśmy się obsługi elementu wewnątrz ramki, a następnie omówimy różne sposoby obsługi elementu dynamicznego.
# 3) Elementy dynamiczne
W tej sekcji nauczymy się różnych sposobów obsługi elementów dynamicznych i konstruowania generycznej ścieżki Xpath.
W kilku scenariuszach atrybuty elementów zmieniają się dynamicznie. Może to być „identyfikator”, „nazwa” itp.
Przykład : powiedzmy, że „id” pola nazwy użytkownika to „nazwa_użytkownika_123”, a XPath będzie
// * [@ id = 'nazwa_użytkownika_123 ′] ale kiedy ponownie otworzysz stronę, pole „id” pola „nazwa użytkownika” mogło się zmienić i nowa wartość może brzmieć „nazwa_użytkownika_234”.
W takim przypadku test zakończy się niepowodzeniem, ponieważ selen nie mógł znaleźć ścieżki XPath, którą przeszedłeś wcześniej, ponieważ identyfikator pola zmienił się na inną wartość.
Istnieje wiele podejść w zależności od rodzaju problemu:
Typ problemu 1: Jeśli część wartości atrybutu ulegnie zmianie .
Przykład : Jak w powyższym przykładzie, wartość id zmienia się, ale kilka pól pozostaje niezmiennych.
„Nazwa_użytkownika_123” zmieniono na „nazwa_użytkownika_234”, ale „nazwa użytkownika” zawsze pozostawała stała.
Możesz skonstruować xpath jak poniżej:
driver.findElement (By.xpath ( „// * [zawiera (@ id,„ nazwa użytkownika ”)]” )). sendKeys ( 'Nazwa Użytkownika' );
kierowca . findElement (By.xpath ( „// * [zaczyna się od (@ id,„ użytkownik ”)]” )). sendKeys ( 'Nazwa Użytkownika' );
„Zawiera” jest metodą java, która sprawdza, czy id zawiera podłańcuchową nazwę użytkownika.
zaczynać z() sprawdza, czy jakikolwiek atrybut zaczyna się od „użytkownik”.
Typ problemu 2: Jeśli cała wartość atrybutu zmienia się dynamicznie.
W tym przypadku można zastosować różne podejścia:
Na przykład : jeśli identyfikator pola „login” zmienia się dynamicznie i nie ma stałej wartości do użycia metody zawiera.
aplikacja umożliwiająca szpiegowanie innego telefonu
Rozwiązanie : Korzystanie z sendKeys.
Selenium zapewnia różne API do używania klawiszy funkcyjnych. Na przykład klawisz tabulacji, klawisze Enter, F5 itp.
Krok 1 : Wprowadź hasło
driver.findElement (By.id ( 'hasło' )). sendKeys („hasło”));
Krok 2 : Użyj kluczowych funkcji, aby przejść do elementu.
driver.findElement (By.id ( 'hasło' )). sendKeys (Keys. WCHODZIĆ ));
lub
driver.findElement (By.id ( 'hasło' )). sendKeys (Keys. PATKA ));
Wniosek
Tabele internetowe, ramki i elementy dynamiczne są istotną częścią każdego projektu internetowego. Zawsze pożądane jest pisanie efektywnego kodu obsługującego tabele internetowe i elementy dynamiczne.
Zrozumienie budowy generycznego XPath, które jest bardzo pomocne podczas obsługi elementów dynamicznych. W przypadku ramki, twój skrypt musi przełączyć ramkę, a następnie operować na elemencie.
Następny samouczek # 19 : W następnym samouczku dotyczącym Selenium dowiemy się o typach wyjątków i sposobach obsługi wyjątków w Javie w skryptach Selenium.
Prosimy o publikowanie zapytań związanych z tabelami WWW, ramkami i obsługą elementów dynamicznych, jeśli takie posiadasz.
rekomendowane lektury
- Jak zlokalizować elementy w przeglądarkach Chrome i IE do tworzenia skryptów selenium - Samouczek Selenium # 7
- Wykorzystanie klasy Selenium Select do obsługi elementów rozwijanych na stronie internetowej - Samouczek Selenium nr 13
- Lokalizatory selenu: identyfikacja elementów sieci Web za pomocą XPath w selenie (przykłady)
- Jak używać selektora CSS do identyfikowania elementów sieci Web dla skryptów selenium - samouczek Selenium nr 6
- Sprawdź widoczność elementów sieci Web przy użyciu różnych typów poleceń WebDriver - samouczek Selenium nr 14
- Cucumber Selenium Tutorial: Integracja Cucumber Java Selenium WebDriver
- Integracja Selenium z JMeter
- Obsługa iFrame przy użyciu metody switchTo () Selenium WebDriver