Бувають випадки, коли нам потрібен доступ до елементів (як правило, до текстів), які знаходяться в таблицях HTML. Однак веб-дизайнер дуже рідко надає атрибут id або name певній комірці таблиці. Тому ми не можемо використовувати звичайні методи, такі як "By.id ()", "By.name ()" або "By.cssSelector ()". У цьому випадку найбільш надійним варіантом є доступ до них методом "By.xpath ()".
У цьому посібнику ви дізнаєтесь-
Як написати XPath для таблиці
Доступ до вкладених таблиць
Використання атрибутів як предикатів
Ярлик: Використовуйте елемент перевірки для доступу до таблиць у селені
Як написати XPath для таблиці
Розгляньте HTML-код нижче.
Ми використаємо XPath, щоб отримати внутрішній текст комірки, що містить текст "четверта комірка".
Крок 1 - Встановіть батьківський елемент (таблиця)
Локатори XPath у WebDriver завжди починаються з подвійної косої риски "//", а потім за батьківським елементом . Оскільки ми маємо справу з таблицями, батьківським елементом завжди повинен бути тег
. Отже, перша частина нашого локатора XPath повинна починатися з "// таблиці".
Крок 2 - Додайте дочірні елементи
Елемент безпосередньо під
має
, тому ми можемо сказати, що
є "дочірнім елементом"
. А також
- це «батько»
. Усі дочірні елементи в XPath розміщуються праворуч від батьківського елемента, розділяються однією косою рискою "/", як код, показаний нижче.
Крок 3 - Додавання предикатів
Елемент
містить два теги
. Тепер ми можемо сказати, що ці два теги
є "дочірніми елементами"
. Отже, ми можемо сказати, що
є батьківським елементом обох елементів
.
Ще можна зробити висновок, що два елементи
- це брати та сестри. Брати та сестри відносяться до дочірніх елементів, що мають одного батька .
Щоб дістатися до
, до якого ми хочемо отримати доступ (до тексту з текстом "четверта комірка"), спочатку потрібно отримати доступ до другого
, а не до першого. Якщо ми просто напишемо "// table / tbody / tr", то ми отримаємо доступ до першого тегу
.
Отже, як тоді отримати доступ до другого
? Відповідь на це - використання предикатів .
Предикати - це числа або атрибути HTML, укладені в пару квадратних дужок "[]", які відрізняють дочірній елемент від його братів і сестер . Оскільки
, до якого нам потрібен доступ, є другим, ми будемо використовувати "[2]" як предикат.
Якщо ми не використовуємо жоден предикат, XPath отримає доступ до першого брата. Тому ми можемо отримати доступ до першого
, використовуючи будь-який із цих кодів XPath.
Крок 4 - Додайте наступні дочірні елементи, використовуючи відповідні предикати
Наступним елементом, до якого нам потрібно отримати доступ, є другий
. Застосовуючи принципи, яких ми вивчили з кроків 2 і 3, ми доопрацюємо наш код XPath таким, як показано нижче.
Тепер, коли у нас є правильний локатор XPath, ми вже можемо отримати доступ до комірки, яку ми хотіли, та отримати її внутрішній текст, використовуючи код нижче. Передбачається, що ви зберегли наведений вище HTML-код як "newhtml.html" на своєму диску C.
Ті самі принципи, про які йшлося вище, застосовуються до вкладених таблиць. Вкладені таблиці - це таблиці, розташовані в іншій таблиці . Приклад наведено нижче.
Щоб отримати доступ до комірки з текстом "4-5-6", використовуючи поняття "// батьківський / дочірній" та предикати з попереднього розділу, ми повинні мати змогу запропонувати код XPath нижче.
Наведений нижче код WebDriver повинен мати можливість отримати внутрішній текст комірки, до якої ми отримуємо доступ.
Вихідні дані підтверджують, що до внутрішньої таблиці було здійснено успішний доступ.
Використання атрибутів як предикатів
Якщо елемент записаний глибоко в HTML-коді, так що номер, який використовуватиметься для предиката, дуже важко визначити, ми можемо замість нього використовувати унікальний атрибут цього елемента.
У наведеному нижче прикладі комірка "Нью-Йорк - Чикаго" розташована глибоко в HTML-коді домашньої сторінки Mercury Tours.
У цьому випадку ми можемо використовувати унікальний атрибут таблиці (width = "270") як предикат. Атрибути використовуються як предикати, ставлячи їх перед символом @ . У наведеному вище прикладі комірка "Нью-Йорк - Чикаго" розташована в першій
четвертої
, і тому наш XPath повинен бути таким, як показано нижче.
Пам'ятайте, що коли ми розміщуємо код XPath на Java, нам слід використовувати косу риску "\" для подвійних лапок по обидва боки від "270", щоб аргумент рядка By.xpath () не припинявся передчасно .
Тепер ми готові отримати доступ до цієї комірки, використовуючи код нижче.
Ярлик: Використовуйте елемент перевірки для доступу до таблиць у селені
Якщо номер або атрибут елемента отримати надзвичайно складно або неможливо, найшвидший спосіб створення коду XPath - це використання елемента перевірки.
Розглянемо приклад нижче із домашньої сторінки Mercury Tours.
Крок 1
Використовуйте Firebug для отримання коду XPath.
Крок 2
Шукайте перший батьківський елемент "таблиця" і видаліть все ліворуч від нього.
Крок 3
Залиште частину коду префіксом подвійною косою рискою "//" та скопіюйте її у свій код WebDriver.
Наведений нижче код WebDriver зможе успішно отримати внутрішній текст елемента, до якого ми отримуємо доступ.
By.xpath () зазвичай використовується для доступу до елементів таблиці.
Якщо елемент записаний глибоко в HTML-коді, так що номер, який використовуватиметься для предиката, дуже важко визначити, ми можемо замість нього використовувати унікальний атрибут цього елемента.
Атрибути використовуються як предикати, ставлячи їх перед символом @.
Використовуйте контрольний елемент для доступу до таблиць у селені