handling web tables frames
В останньому навчальному посібнику з Selenium WebDriver ми вивчили різні загальні та регулярно використовуються команди Selenium WebDriver включаючи такі важливі теми, як обробка iframe та винятки в сценаріях Selenium.
Рухаючись вперед у нашому комплексному серія навчальних посібників з селену , у цьому посібнику ми б обговорили обробка веб-таблиць, iframe та динамічних елементів які є важливою частиною будь-якого веб-проекту.
Цей підручник складається з 3 різних тем та механізмів їх обробки на сценарії селену.
- Веб-таблиці / HTML-таблиці
- Рамки
- Динамічні елементи
Що ви дізнаєтесь:
- # 1) Веб-таблиці / HTML-таблиці
- # 2) Рамки
- # 3) Динамічні елементи
- Висновок
- Рекомендована література
# 1) Веб-таблиці / HTML-таблиці
У цьому модулі ми дізнаємося про веб-таблиці або таблиці HTML на веб-сторінці, теги, доступні в HTML, і про те, як динамічно обробляти веб-таблиці.
Веб-таблиці - це в основному група елементів, які логічно зберігаються у форматі рядків і стовпців. Він використовується для організації подібної інформації на веб-сторінці.
Нижче наведено приклад таблиці HTML:
Нижче наведено фрагмент HTML-структури таблиці HTML:
Нижче теги, як правило, визначаються в HTML-таблицях:
Тег 1.’table ’визначає таблицю HTML.
2. тег'tbody визначає контейнер для рядків і стовпців.
3.'tr ’визначає рядки в таблиці HTML.
4.'td ’/’ th ’визначає стовпець таблиці HTML.
Знайдіть деталі веб-таблиці:
Існує багато способів обробки веб-таблиці.
безкоштовний очищувач реєстру Windows і ремонт -
Підхід No1 :
Нижче наведено xpath однієї з комірок таблиці html. Скажімо, 'ім’я'
// div (@ id = ’main’) / table (1) / tbody / tr (1) / th (1)
tr (1) визначає перший рядок, а th (1) - перший стовпець.
Якщо кількість рядків і стовпців завжди постійна, припустимо, наша таблиця HTML завжди матиме 5 рядків і 3 стовпці.
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+”)”))); } }
За винятком номера рядка та стовпця, кожен компонент XPath залишається незмінним. Таким чином, ви можете робити ітерації, використовуючи “for loop” для кожного рядка та стовпця, як уже згадувалося вище.
Підхід No2 :
Перший підхід найкраще підходить для столу, який не змінює свої розміри і завжди залишається незмінним. Вищевказаний підхід не буде ідеальним рішенням для динамічно змінюваних веб-таблиць.
Візьмемо для прикладу вище таблицю HTML:
WebElement htmltable=driver.findElement(By.xpath('//*(@id='main')/table(1)/tbody')); List rows=htmltable.findElements(By.tagName('tr')); for(int rnum=0;rnum Крок 1 : Спочатку отримайте всю таблицю HTML і збережіть її у змінній „htmltable” типу web element.
Крок 2 : Отримати всі рядки з назвою тегу „tr“ і зберегти всі елементи у списку веб-елементів. Тепер усі елементи з тегом 'tr' зберігаються у списку 'рядки'.
Крок 3 : Прокрутіть кожен рядок і отримайте список елементів з тегом «Го». ‘Рядки.get (0)’ дасть перший ряд і ‘FindElements (By.tagName ( “Го” )) ' дасть список стовпців для рядка.
Крок 4 : Ітерація використання ‘Columns.getsize ()’ і отримати деталі кожної комірки.
Примітка : Вищевказаний підхід буде найкращим, якщо розміри таблиці змінюватимуться динамічно.
На цьому тема закінчена темою, як обробляти веб-таблиці в селені. Далі ми дізнаємося про обробку елемента всередині кадру.
# 2) Рамки
У цьому розділі ми дізнаємося про кадри на веб-сторінці та про те, як їх ідентифікувати. Крім того, ми з’ясуємо, як ми можемо обробляти фрейм у Selenium WebDriver.
Багато розробників люблять розміщувати елементи всередині кадру. Рамка схожа на контейнер, де можна згрупувати мало елементів.
Ідентифікація кадру:
Різні способи дізнатися, присутній елемент всередині кадру чи ні
№1 . Клацніть правою кнопкою миші на елементі. Перевірте, чи доступна опція “Цей кадр”. Якщо доступна опція Цей кадр, це означає, що елемент знаходиться всередині кадру.
# два . Перегляньте джерело сторінки веб-сторінки та перевірте, чи є якийсь тег для «iframe».
як оголосити float в Java - -

Перевірити кількість кадрів на веб-сторінці :
Усі кадри мають назву тегу як “iframe”.
Список frameList = driver.findElements (By.tagName ( 'Iframe' ));
System.out.println (frameList.size ());
У наведеному вище прикладі : frameList буде мати весь список кадрів і frameList.size () дасть кількість кадрів.
Обробка елемента всередині рами:
Якщо елемент знаходиться всередині кадру, тоді спочатку елемент керування повинен переключитися на кадр, а потім почати оперувати елементами.
Крок 1 : Для перемикання всередині кадру:
driver.switchTo (). frame (1); // передаємо номер кадру як параметр.
або
driver.switchTo (). frame (“Ім'я кадру”); // передаємо ім'я кадру як параметр.
або
driver.switchTo (). frame (“xpath of the frame”);
Крок 2 : Після перемикання всередині кадру селен зможе діяти на елементи.
driver.findElement ( // ********************************************);
driver.findElement ( // *********************************************);
Тут ми дізналися, як обробляти елемент всередині кадру, і далі ми розповімо про різні способи обробки динамічного елемента.
# 3) Динамічні елементи
У цьому розділі ми вивчимо різні способи обробки динамічного елемента та побудови загального Xpath.
У деяких сценаріях атрибути елементів змінюються динамічно. Це може бути „ідентифікатор“, „ім’я“ тощо.
Приклад : скажімо, «ідентифікатор» поля імені користувача - «username_123», і XPath буде
// * (@ id = ’username_123 ′) але коли ви знову відкриваєте сторінку, поле 'id' поля 'username' могло змінитися, і новим значенням може бути 'username_234'.
У цьому випадку тест не вдасться, оскільки селен не зміг знайти XPath, який ви пройшли раніше, оскільки ідентифікатор поля змінився на інше значення.
Залежно від типу проблеми існує багато підходів:
Тип проблеми 1: Якщо частина значення атрибута змінюється .
Запитання щодо інтерв’ю щодо селену за 8-річний досвід
Приклад : Як і у наведеному вище прикладі, значення id змінюється, але мало полів залишається постійним.
'Username_123' змінено на 'username_234', але 'username' завжди залишалося незмінним.
Ви можете побудувати xpath, як показано нижче:
driver.findElement (By.xpath ( “// * (містить (@ id,‘ ім’я користувача ’))” )). sendKeys ( “Ім’я користувача” );
водій . findElement (By.xpath ( “// * (починається з (@ id,‘ user ’))” )). sendKeys ( “Ім’я користувача” );
‘Містить’ - це метод Java, який перевіряє, чи ідентифікатор містить ім'я користувача підрядка.
починається з () перевіряє, чи починається будь-який атрибут з “користувач”.
Тип проблеми 2: Якщо ціле значення атрибута динамічно змінюється.
Знову ж таки, у цьому випадку можуть бути різні підходи:
Наприклад : якщо ідентифікатор поля «login» динамічно змінюється, і немає постійного значення, яке потрібно використовувати, містить метод.
Рішення : Використання sendKeys.
Селен надає різні API для використання функціональних клавіш. Наприклад, клавіша табуляції, клавіші введення, F5 тощо.
Крок 1 : Введіть пароль
driver.findElement (By.id ( “Пароль” )). sendKeys (“пароль”));
Крок 2 : Використовуйте ключові функції для переходу до елемента.
driver.findElement (By.id ( “Пароль” )). sendKeys (Ключі. ENTER ));
або
driver.findElement (By.id ( “Пароль” )). sendKeys (Ключі. TAB ));
Висновок
Веб-таблиці, фрейми та динамічні елементи є важливою частиною будь-якого веб-проекту. Завжди бажано писати ефективний код для обробки веб-таблиць та динамічних елементів.
Розуміння побудови загального XPath, що дуже корисно при роботі з динамічними елементами. У разі фрейму, ваш скрипт повинен переключити фрейм, а потім оперувати елементом.
Наступний підручник No19 : У наступному підручнику з селену ми дізнаємось про типи винятків і про те, як обробляти винятки в Java у сценаріях Selenium.
Будь ласка, опублікуйте свої запити, що стосуються веб-таблиць, фреймів та обробки динамічного елемента, якщо вони є.
Рекомендована література
- Як знайти елементи в браузерах Chrome та IE для побудови сценаріїв селену - Підручник з селену No7
- Використання класу Selenium Select для обробки випадаючих елементів на веб-сторінці - Підручник селену №13
- Локатори селену: виявлення веб-елементів за допомогою XPath у селені (приклади)
- Як використовувати селектор CSS для ідентифікації веб-елементів для сценаріїв селену - Підручник з селену №6
- Перевірте видимість веб-елементів, використовуючи різні типи команд WebDriver - Підручник з селену №14
- Підручник з огірка селену: інтеграція огірка Java Selenium WebDriver
- Інтеграція селену з JMeter
- Обробка iFrames за допомогою методу Selenium WebDriver switchTo ()