Селектор CSS в Selenium
Що таке селектор CSS?
Селектори CSS в Selenium це шаблони рядків, які використовуються для ідентифікації елемента на основі комбінації тегу HTML, ідентифікатора, класу та атрибутів. Розташування за допомогою селекторів CSS у Selenium є більш складним, ніж попередні методи, але це найпоширеніша стратегія визначення місцезнаходження передових Selenium користувачів, оскільки він може отримати доступ навіть до тих елементів, які не мають ідентифікатора чи імені.
Селектори CSS в Selenium мають багато форматів, але ми зупинимося лише на найпоширеніших. Різні типи CSS Locator в Selenium IDE
- Тег та ID
- Тег і клас
- Тег і атрибут
- Тег, клас і атрибут
- Внутрішній текст
Використовуючи цю стратегію, ми завжди ставимо префікс the Target поле з «css=», як буде показано в наступних прикладах.
тег і ідентифікатор – CSS Selector
У цьому прикладі ми знову використаємо текстове поле електронної пошти Facebook. Як ви пам’ятаєте, він має ідентифікатор «email», і ми вже відкривали його в розділі «Пошук за ідентифікатором». Цього разу ми використаємо a Selenium Селектор CSS з ідентифікатором для доступу до того самого елемента.
синтаксис
css=tag#id
- tag = тег HTML елемента, до якого здійснюється доступ
- # = знак решітки. Це має бути завжди при використанні a Selenium Селектор CSS з ідентифікатором
- id = ідентифікатор елемента, до якого здійснюється доступ
Пам’ятайте, що перед ідентифікатором завжди стоїть символ решетки (#).
Крок 1) перейдіть до www.facebook.com. За допомогою Firebug перевірте текстове поле «Електронна пошта або телефон».
На цьому етапі зверніть увагу, що тег HTML – це «вхід», а його ідентифікатор — «електронна пошта». Отже, наш синтаксис буде «css=input#email».
Крок 2) Введіть «css=input#email» у поле Target коробка Selenium IDE та натисніть кнопку Знайти. Selenium IDE повинна мати можливість підсвічувати цей елемент.
тег і клас – CSS Selector
Селектор CSS в Selenium використання тегу HTML і назви класу подібне до використання тегу та ідентифікатора, але в цьому випадку замість знака решітки використовується крапка (.).
синтаксис
css=tag.class
- tag = тег HTML елемента, до якого здійснюється доступ
- . = знак крапки. Це завжди має бути присутнім під час використання селектора CSS із класом
- class = клас елемента, до якого здійснюється доступ
Крок 1) Перейдіть на демонстраційну сторінку https://demo.guru99.com/test/facebook.html і використовуйте Firebug, щоб перевірити текстове поле «Електронна пошта або телефон». Зверніть увагу, що його HTML-тег — «вхід», а його клас — «вхідний текст».
Крок 2) In Selenium IDE, введіть «css=input.inputtext» у Target і натисніть Знайти. Selenium IDE має розпізнавати текстове поле електронної пошти або телефону.
Зверніть увагу, що коли кілька елементів мають однаковий HTML-тег і назву, розпізнається лише перший елемент у вихідному коді. Використовуючи Firebug, перевірте текстове поле Password у Facebook і зверніть увагу, що воно має таке ж ім’я, як і текстове поле Email або Phone.
Причина, чому лише текстове поле «Електронна пошта» або «Телефон» було виділено на попередній ілюстрації, полягає в тому, що воно стоїть першим у вихідному коді сторінки Facebook.
тег і атрибут – CSS Selector
Ця стратегія використовує тег HTML і певний атрибут елемента, до якого потрібно отримати доступ.
синтаксис
css=tag[attribute=value]
- tag = тег HTML елемента, до якого здійснюється доступ
- [ і ] = квадратні дужки, у яких буде розміщено певний атрибут і відповідне йому значення
- attribute = атрибут, який буде використано. Бажано використовувати атрибут, унікальний для елемента, наприклад ім’я або ідентифікатор.
- значення = відповідне значення вибраного атрибута.
Крок 1) перейдіть до Mercury Сторінка реєстрації на тури https://demo.guru99.com/test/newtours/register.php і перевірте текстове поле «Прізвище». Зверніть увагу на тег HTML (у цьому випадку «вхід») і назву («прізвище»).
Крок 2) In Selenium IDE, введіть «css=input[name=lastName]» у Target і натисніть Знайти. Selenium IDE повинна успішно отримати доступ до поля «Прізвище».
Якщо кілька елементів мають однаковий HTML-тег і атрибут, буде розпізнано лише перший. Така поведінка схожа на пошук елементів за допомогою селекторів CSS з тим самим тегом і класом.
тег, клас і атрибут – CSS Selector
синтаксис
css=tag.class[attribute=value]
- tag = тег HTML елемента, до якого здійснюється доступ
- . = знак крапки. Це завжди має бути присутнім під час використання селектора CSS із класом
- class = клас елемента, до якого здійснюється доступ
- [ і ] = квадратні дужки, у яких буде розміщено певний атрибут і відповідне йому значення
- attribute = атрибут, який буде використано. Бажано використовувати атрибут, унікальний для елемента, наприклад ім’я або ідентифікатор.
- значення = відповідне значення вибраного атрибута.
Крок 1) Перейдіть на демонстраційну сторінку https://demo.guru99.com/test/facebook.html і використовуйте Firebug, щоб перевірити поля введення «Електронна пошта або телефон» і «Пароль». Зверніть увагу на тег, клас і атрибути HTML. Для цього прикладу ми виберемо їхні атрибути 'tabindex'.
Крок 2) Спочатку ми отримаємо доступ до текстового поля «Електронна пошта або телефон». Таким чином, ми будемо використовувати значення tabindex 1. Введіть «css=input.inputtext[tabindex=1]» у Selenium IDE Target і натисніть Знайти. Поле введення «Електронна пошта або телефон» має бути виділено.
Крок 3) Щоб отримати доступ до поля введення пароля, просто замініть значення атрибута tabindex. Введіть «css=input.inputtext[tabindex=2]» у полі Target і натисніть кнопку Знайти. Selenium IDE має мати можливість успішно ідентифікувати текстове поле пароля.
внутрішній текст – CSS Selector
Як ви могли помітити, міткам HTML рідко надають атрибути id, name або class. Отже, як нам отримати до них доступ? Відповідь полягає у використанні їхніх внутрішніх текстів. Внутрішні тексти — це фактичні шаблони рядків, які мітка HTML показує на сторінці.
синтаксис
css=tag:contains("inner text")
- tag = тег HTML елемента, до якого здійснюється доступ
- внутрішній текст = внутрішній текст елемента
Крок 1) перейдіть до Mercury Домашня сторінка турів https://demo.guru99.com/test/newtours/ і використовуйте Firebug, щоб дослідити мітку «Пароль». Зверніть увагу на його тег HTML (який у цьому випадку є «шрифтом») і зауважте, що він не має атрибутів класу, ідентифікатора чи імені.
Крок 2) тип css=font:contains(“Пароль:”) в Selenium IDE Target і натисніть Знайти. Selenium IDE має мати доступ до мітки пароля, як показано на зображенні нижче.
Крок 3) Цього разу замініть внутрішній текст на «Boston», щоб ваш Target тепер стане “css=font:contains(“Boston”)”. Натисніть Знайти. Слід помітити, що напис «Бостон — Сан-Франциско» стає виділеним. Це показує вам це Selenium IDE може отримати доступ до довгої мітки, навіть якщо ви просто вказали перше слово її внутрішнього тексту.
Підсумки
Синтаксис для визначення місця розташування за використанням селектора CSS
Метод | Target синтаксис | Приклад |
---|---|---|
Тег та ID | css=tag#id | css=input#email |
Тег і клас | css=tag.class | css=input.inputtext |
Тег і атрибут | css=тег[атрибут=значення] | css=вхід[ім'я=прізвище] |
Тег, клас і атрибут | css=tag.class[атрибут=значення] | css=input.inputtext[tabindex=1] |