Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ β€” ΠžΡΠ½ΠΎΠ²Ρ‹ CSS β€” HTML Academy

Загрузка…
Π§Π΅Ρ€Π΅Π· нСсколько сСкунд всё Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΎ

  • index.html
  • style.css
HTML

<!DOCTYPE html> <html lang=»ru»> <head> <meta charset=»utf-8″> <title>Π‘Π°ΠΉΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ Π²Π΅Ρ€ΡΡ‚Π°Π»ΡŒΡ‰ΠΈΠΊΠ°</title> <link rel=»stylesheet» href=»style.css»> </head> <body> <header> <h2>Π‘Π°ΠΉΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ Π²Π΅Ρ€ΡΡ‚Π°Π»ΡŒΡ‰ΠΈΠΊΠ°</h2> </header> <main> <img src=»img/raccoon.svg» alt=»ΠΠ²Π°Ρ‚Π°Ρ€ΠΊΠ°»> <nav> <h3>Записи Π² Π±Π»ΠΎΠ³Π΅</h3> <ul> <li><a href=»day-1.html»>Π”Π΅Π½ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ. Как я Π·Π°Π±Ρ‹Π» ΠΏΠΎΠΊΠΎΡ€ΠΌΠΈΡ‚ΡŒ ΠΊΠΎΡ‚Π°</a></li> <li><a href=»day-2.html»>Π”Π΅Π½ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ. Π₯ΠΎΡ‡Ρƒ Π±Ρ‹Ρ‚ΡŒ Π²Π΅Ρ€ΡΡ‚Π°Π»ΡŒΡ‰ΠΈΠΊΠΎΠΌ</a></li> <li><a href=»day-3.html»>Π”Π΅Π½ΡŒ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ. Мой ΠΊΠΎΡ‚ Π½Π° мСня обидСлся</a></li> <li><a href=»day-4.

html»>Π”Π΅Π½ΡŒ Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚Ρ‹ΠΉ. Как я Ρ‡ΡƒΡ‚ΡŒ Π½Π΅ Π·Π°Π±ΠΎΠ»Π΅Π»</a></li> <li><a href=»day-5.html»>Π”Π΅Π½ΡŒ пятый. ΠžΡ‚Π΄Ρ‹Ρ…Π°ΡŽ</a></li> <li><a href=»day-6.html»>Π”Π΅Π½ΡŒ ΡˆΠ΅ΡΡ‚ΠΎΠΉ. Как я Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ понял</a></li> <li><a href=»day-7.html»>Π”Π΅Π½ΡŒ сСдьмой. КСкс Π²Ρ‹Π΄Π°Π» ΠΌΠ½Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅</a></li> <li><a href=»day-8.html»>Π”Π΅Π½ΡŒ восьмой. ΠžΡ‡Π΅Π½ΡŒ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹ΠΉ</a></li> <li><a href=»day-9.html»>Π”Π΅Π½ΡŒ дСвятый. Π’ΠΎΡ‡Π½Π΅Π΅ Π½ΠΎΡ‡ΡŒ</a></li> <li><a href=»day-10.html»>Π”Π΅Π½ΡŒ дСсятый. ПодвСдСниС ΠΈΡ‚ΠΎΠ³ΠΎΠ²</a></li> <li><a href=»day-11.html»>Π”Π΅Π½ΡŒ ΠΎΠ΄ΠΈΠ½Π½Π°Π΄Ρ†Π°Ρ‚Ρ‹ΠΉ. Π‘Π΅Π· Ρ„Π°Π½Π°Ρ‚ΠΈΠ·ΠΌΠ°</a></li> <li><a href=»day-12.html»>Π”Π΅Π½ΡŒ Π΄Π²Π΅Π½Π°Π΄Ρ†Π°Ρ‚Ρ‹ΠΉ. ВсС Π»ΡŽΠ±ΡΡ‚ ΠΏΠ΅Ρ‡Π΅Π½ΡŒΠ΅</a></li> <li><a href=»day-13.html»>Π”Π΅Π½ΡŒ Ρ‚Ρ€ΠΈΠ½Π°Π΄Ρ†Π°Ρ‚Ρ‹ΠΉ. ΠΠ°ΡˆΡ‘Π» ΡΡ‚Π°Ρ‚ΡŒΡŽ</a></li> <li><a href=»day-14.
html»>Π”Π΅Π½ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π½Π°Π΄Ρ†Π°Ρ‚Ρ‹ΠΉ. Новый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚</a></li> <li><a href=»day-15.html»>Π”Π΅Π½ΡŒ пятнадцатый. ГалСрСя сСлфи</a></li> </ul> </nav> <section> <p>ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚! Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сайт. Π•Ρ‰Ρ‘ Π½Π΅Π΄Π°Π²Π½ΠΎ я понятия Π½Π΅ ΠΈΠΌΠ΅Π», ΠΊΡ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Π²Π΅Ρ€ΡΡ‚Π°Π»ΡŒΡ‰ΠΈΠΊ, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я Π½Π°ΡˆΡ‘Π» <a href=»https://htmlacademy.ru/courses»>Ρ‚Ρ€Π΅Π½Π°ΠΆΡ‘Ρ€Ρ‹ ΠΏΠΎ HTML ΠΈ CSS</a> ΠΈ поставил ΠΏΠ΅Ρ€Π΅Π΄ собой Ρ†Π΅Π»ΡŒ β€” ΡΡ‚Π°Ρ‚ΡŒ ΠΈΠΌ. Π£ мСня Π΄Π°ΠΆΠ΅ появился инструктор β€” КСкс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΌΠ½Π΅ Ρ€Π°ΡΡΠ»Π°Π±ΠΈΡ‚ΡŒΡΡ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΌΠΎΠΈΠΌΠΈ успСхами.</p> <p>ΠœΠΎΡ‘ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ β€” вСсти Π΄Π½Π΅Π²Π½ΠΈΠΊ ΠΈ чСстно ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±ΠΎ всСх своих ΡΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡΡ….</p> </section> <section> Π Π°Π·Π΄Π΅Π» ΠΏΡ€ΠΎ Π½Π°Π²Ρ‹ΠΊΠΈ </section> </main> <footer> Подвал сайта </footer> </body> </html>

CSS

body { padding: 0 30px; font-size: 14px; line-height: 22px; font-family: «Georgia», serif; color: #222222; } h2 { font-size: 36px; line-height: normal; } h3 { font-size: 20px; line-height: normal; } a { color: #0099ef; text-decoration: underline; } /* Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ сСлСктора Π² ΠΏΡ€Π°Π²ΠΈΠ»Π΅ Π½ΠΈΠΆΠ΅ */ selector { border-radius: 10px; } nav { margin-bottom: 30px; background-color: #4470c4; } /* Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ сСлСктора Π² ΠΏΡ€Π°Π²ΠΈΠ»Π΅ Π½ΠΈΠΆΠ΅ */ selector { color: #ffffff; } ul { list-style: none; padding-left: 0; } footer { margin-top: 30px; }

Π§Ρ‚ΠΎ Π²Β Π·Π°Π΄Π°Π½ΠΈΠΈ Π²Π°ΠΌ Π½Π΅Β ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ?

НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ΄Π°Π—Π°Π΄Π°Π½ΠΈΠ΅ слишком слоТноСНСпонятная тСорияДругоС (сСйчас Π½Π°ΠΏΠΈΡˆΡƒ)

Π”Ρ€ΡƒΠ³ΠΎΠ΅ (сСйчас Π½Π°ΠΏΠΈΡˆΡƒ)

Бпасибо! ΠœΡ‹Β ΡΠΊΠΎΡ€ΠΎ всё исправим)

Код измСнился, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΒ» ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ автозапуск.

Π’Ρ‹Β ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ Π½Π°Β Π΄Ρ€ΡƒΠ³ΡƒΡŽ страницу

ΠšΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠΈΠ½ΠΈ-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ фокус Π² это ΠΎΠΊΠ½ΠΎ.

Π—Π°Π΄Π°Ρ‡ΠΈΠ’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ

  1. Π’Β CSS-ΠΏΡ€Π°Π²ΠΈΠ»Π΅ Π½Π°Β 25 строкС Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π°Π³Π»ΡƒΡˆΠΊΡƒ selector на сСлСктор .avatar,
  2. Π°Β Π·Π°Ρ‚Π΅ΠΌ Π½Π°Β 35 строкС Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π°Π³Π»ΡƒΡˆΠΊΡƒ selector на сСлСктор nav a (Π΄Π°, с пробСлом, ΠΏΠΎΠ·ΠΆΠ΅ расскаТСм ΠΏΠΎΡ‡Π΅ΠΌΡƒ).

CSS | Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»Π°

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ CSS – ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (ΠΌΠ°Ρ€ΠΊΠ΅Ρ€) Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ выполнСния внСшнСго ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ стилСвого ΠΏΡ€Π°Π²ΠΈΠ»Π° отобраТСния Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ html-элСмСнта

  1. Π‘Ρ‚ΠΈΠ»Π΅Π²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ
  2. CSS-стили
  3. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ CSS
  4. Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»Π° CSS
  5. Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ html-Ρ‚Π΅Π³ΠΎΠ²
  6. Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ классов
  7. Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²
Π‘Ρ‚ΠΈΠ»Π΅Π²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ

Π‘Ρ‚ΠΈΠ»Π΅Π²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ опрСдСляСт Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ порядок отобраТСния html-элСмСнта – внСшнСго Π²ΠΈΠ΄Π° ΠΈ мСста Π½Π° Π²Π΅Π±-страницС. Π‘Ρ‚ΠΈΠ»Π΅Π²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ содСрТит запись ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ CSS-стиля, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· указания свойства элСмСнта ΠΈ Π΅Π³ΠΎ значСния, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ΠΌ, с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой Π² ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ.


свойство: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;

CSS-стили

CSS-стили ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ внСшний Π²ΠΈΠ΄ ΠΈ располоТСниС html-элСмСнта Π½Π° страницС – Ρ†Π²Π΅Ρ‚, ΡˆΡ€ΠΈΡ„Ρ‚, Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ°, списка, Π°Π±Π·Π°Ρ†Π° … Π Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ встроСнный ΡΡ‚ΠΈΠ»ΡŒ html-элСмСнта ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй CSS (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΈ внСшниС). Π’Π°Π±Π»ΠΈΡ†Ρ‹ стилСй CSS, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ встроСнного стиля – находятся Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ html-элСмСнта. Π‘Π²ΡΠ·Π°Ρ‚ΡŒ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ стиля html-элСмСнта ΠΈ сам элСмСнт, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ html-элСмСнт выполнСния ΠΏΡ€Π°Π²ΠΈΠ»Π° стиля, трСбуСтся ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ –

CSS-сСлСктор ΠΏΡ€Π°Π²ΠΈΠ»Π°.Β Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»Π° CSS ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ мСсто Π½Π° страницС (html-элСмСнт) примСнСния прописанных CSS-стилСй. CSS-сСлСктор – Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† CSS. Π‘ΠΏΡ€Π°Π²ΠΊΠ°:

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ CSS

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΈ внСшниС) Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ CSS-стилСй состоят ΠΈΠ· ΠΏΡ€Π°Π²ΠΈΠ» ΠΈ содСрТат ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ отобраТСния html-элСмСнта. ВСкст

ΠΏΡ€Π°Π²ΠΈΠ»Π° начинаСтся Π΅Π³ΠΎ сСлСктором. Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»Π° располагаСтся Π΄ΠΎ Π·Π½Π°ΠΊΠ° Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ скобки Β«{Β» ΠΈ опрСдСляСт элСмСнт html-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ.
Π‘Π»ΠΎΠΊ объявлСний ΠΏΡ€Π°Π²ΠΈΠ»Π° располоТСн Π·Π° сСлСктором, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки ΠΈ содСрТит объявлСния стилСй, Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠΌ Β«;Β». Π’ объявлСнии стиля ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ свойство элСмСнта ΠΈ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ДопускаСтся (Π½ΠΎ, Π½Π΅ привСтствуСтся) сокращСнная Ρ„ΠΎΡ€ΠΌΠ° записи ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ CSS, Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки:

сСлСктор{свойсто:Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;}

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»Π° CSS

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»Π° CSS – Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ CSS-стиля, находящСгося Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ html-элСмСнта Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. CΠ΅Π»Π΅ΠΊΡ‚ΠΎΡ€ CSS ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ html-элСмСнт для примСнСния CSS-стилСй, содСрТащихся Π² Π±Π»ΠΎΠΊΠ΅ объявлСний возглавляСмого ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… внСшний Π²ΠΈΠ΄ ΠΈ располоТСниС html-элСмСнта Π½Π° страницС – Ρ†Π²Π΅Ρ‚, ΡˆΡ€ΠΈΡ„Ρ‚, Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΎΠ±Ρ‚Π΅ΠΊΠ°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ°, списка, Π°Π±Π·Π°Ρ†Π° …

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ html-Ρ‚Π΅Π³ΠΎΠ²

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ html-Ρ‚Π΅Π³ΠΎΠ² (сСлСктором ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ элСмСнтов) выступаСт нСпосрСдствСнно html-Ρ‚Π΅Π³ спСцификации HTML. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ сСлСктора Ρ‚Π΅Π³ΠΎΠ² распространяСтся Π½Π° элСмСнты страницы с прописанным html-Ρ‚Π΅Π³ΠΎΠΌ ΠΈ примСняСтся Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΈ отсутствии указания ΠΈΠ½ΠΎΠ³ΠΎ:

/* ΠšΡ€ΠΎΡΡΠ±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹ΠΉ сброс отступов */
html, body, div, p, a, span, h2, dl, dt, dd, ol, ul, li, form, label, table, caption, tr, th, td, article, aside, menu, nav, output, section, audio, video {margin:0;}

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ классов

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ сСлСктора классов Π²Π΅Ρ€Π½ΠΎ для элСмСнтов HTML с присвоСнным Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ class ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² сСлСкторС ΠΈΠΌΠ΅Π½ΠΈ. Имя слагаСтся ΠΈΠ· Ρ†ΠΈΡ„Ρ€ ΠΈ латинских символов Π² любой ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ. Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎ-ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ, ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΌΡƒΡŽ ΠΎΡ‚ Π½Π°Π·Π²Π°Π½ΠΈΠΉ Ρ‚Π΅Π³ΠΎΠ² спСцификации HTML ΠΈ Π»ΠΈΡ‚Π΅Ρ€Ρ‹ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ рСгистра. Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€Ρƒ классов Π² CSS Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ:
CSS

.red123{color:red;}
HTML
<div class=”red123”>красный тСкст</div>
<p class=”red123”>красный тСкст</p>
<h4 class=”red123”>красный тСкст</h4>

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²

ДСйствиС сСлСктора ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСлСктора классов, ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Β«idΒ» присваиваСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнту HTML. Бвойства ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ сСлСктором ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², примСнятся Π² ΠΎΠ΄Π½ΠΎΠΌ СдинствСнном экзСмплярС с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ Β«idΒ» – ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ. Имя ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° формируСтся (придумываСтся Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ) ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ ΠΈΠΌΠ΅Π½ΠΈ сСлСктора классов ΠΈ прибавляСтся спСрСди Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠ°. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΎΡ‚ класса: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² якорях-html ΠΈ jΠ°vascript для нахоТдСния ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ мСста Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Выбирая имя, Π²Π°ΠΆΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒΡΡ ΠΈ Π½Π΅ ΡΠ±ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ страницы.

CSS
#red123{color:red;}
HTML
<div id=”red123”>красный тСкст ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ здСсь !!!</div>

ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ элСмСнтов

ОсновноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ класса ΠΎΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° – ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта, класс ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ сразу нСскольким. Для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚Π°ΠΊΠΎΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π²Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚.

Π’Π΅Ρ€ΡΡ‚Π°Π»ΡŒΡ‰ΠΈΠΊΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сСлСкторов с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ уровня наслСдствСнности ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ возмоТностСй основных сСлСкторов сСлСкторов Π·Π° счСт добавлСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², псСвдо-классов ΠΈ псСвдоэлСмСнтов.

=»http://»] {свойство: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;}

– Ρ‡Π°ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, любоС слово Π² маскС*
Π°[Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚*=»Π»ΡŽΠ±ΠΎΠ΅_слово_Π²_маскС»]

a[href*=»tehnopost «]{свойство: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;}

– Ρ‡Π°ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ маски$:
ссылки Π½Π° Π΄ΠΎΠΌΠ΅Π½ Β«. InfoΒ»
[Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚$=»_ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅»]
Π°[href$=». info»] {свойство: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;}
ссылки Π½Π° Ρ„ΠΎΡ‚ΠΎ Β«.jpgΒ»:
Π°[href$=».jpg»]

Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ элСмСнты с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ Π² описанном стилС. Π’ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ°Ρ… приводятся Π² основном, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ со ссылками.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ²
Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² (контСкстный сСлСктор, сСлСктор Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² стилизации ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… элСмСнтов. Классика ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° – ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ списка:
1. #menu {свойство: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;}
2. #menu ul {свойство: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;}
3. #menu ul li {свойство: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;}
4. #slidemenu ul li a {свойство: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;}
5. #slidemenu ul li a span{свойство: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;}
/* Π“Π»ΡƒΠ±ΠΆΠ΅ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ свойства Π½Π΅ Π½Π°Π΄ΠΎ. */
Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов
ul > b {свойство: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;}
Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов (сСлСктор Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ) Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ прямого ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° (элСмСнт b) Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС ΠΈ Π½Π΅ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ элСмСнт b Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… строках html-ΠΊΠΎΠ΄Π°:
1.   <ul><b>тСкст</b>
2.   <li><b>тСкст</b>
3.    <ul>
4.     <li><b>тСкст</b></li>
5.    </ul>
6.    <ul>
7.     <li><b>тСкст</b></li>
8.    </ul>
9.   </li>
10.  <li><b>тСкст</b></li>
11. </ul>
Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ уровня
Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ уровня (сосСдний сСлСктор) ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ элСмСнт, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ сразу ΠΆΠ΅ Π·Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ элСмСнтом. Π’Ρ‹Π±Π΅Ρ€Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Π±Π·Π°Ρ† тСкста, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° тэгом h2 (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Π±Π·Π°Ρ† Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС):
h2 + p {свойство: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;}
Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ псСвдоклассов ΠΈ псСвдоэлСмСнтов

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ интСрСс ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ сСлСкторы псСвдоклассов ΠΈ псСвдоэлСмСнтов, ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ html-элСмСнту, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ – ссылкС ΠΈΠ»ΠΈ ΡΠΊΠΎΡ€ΡŽ:

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ псСвдоклассов
a:active {color: blue;}
a:link { color: red; }
a:visted { color: purple; }

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ псСвдоэлСмСнтов
/* Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹ Π°Π±Π·Π°Ρ†Π°*/
p::first-line {font-weight:bold; font-size: 1. 2em;}

Π Π°Π·Π½ΠΈΡ†Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² лишнСм Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠΈ.

Π’ CSS сущСствуСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ псСвдоклассов, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π²ΠΈΠ΄ гипСрссылок с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ состояниСм Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, Π²ΠΈΠ΄ элСмСнта, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится фокус Π²Π²ΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄ элСмСнтов, ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ элСмСнтами Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов. ΠŸΡΠ΅Π²Π΄ΠΎΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² CSS сущСствуСт Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅: пСрвая Π±ΡƒΠΊΠ²Π°, пСрвая строка, стили Β«Π΄ΠΎΒ» ΠΈ «послС» элСмСнта.

{color: blue;}
{font-size: 32px;}
{color: red;}
дальшС ΠΏΠΎ тСксту:
{свойство: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;}

ИмСна классов ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½Π°Π·Π²Π°Π½ΠΈΠΉ Ρ‚Π΅Π³ΠΎΠ² ΠΈ ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΊ рСгистру Π²Π²ΠΎΠ΄Π° Π±ΡƒΠΊΠ².


ВСстимо, внСшниС стили CSS находятся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… (Π²Π½Π΅ΡˆΠ½ΠΈΡ…) Ρ„Π°ΠΉΠ»Π°Ρ…, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ – Π² Ρ‚Π΅Π»Π΅ Π²Π΅Π±-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, встроСнныС – нСпосрСдствСнно Π² ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ Ρ‚Π΅Π³Π΅ html-элСмСнта.

CSS описываСт свойства элСмСнта – Π² CSS-стили ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ внСшний Π²ΠΈΠ΄ ΠΈ свойства HTML-элСмСнтов. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ CSS-стили ΠΊ Π²Π΅Π±-страницС: встроСнно, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ ΠΈ внСшнС. html-элСмСнт ΠΈ ΡΡ‚ΠΈΠ»ΡŒ отобраТСния ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… мСстах Π²Π΅Π±-страницы, Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… ΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… сайтах (сСрвСрах, адрСсах). Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ html-элСмСнт ΠΈ ΠΊΠΎΠ΄ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ стиля – Π² CSS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ сСлСкторы.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ Π²Π½Π΅Π΄Ρ€ΡΡŽΡ‚ΡΡ CSS-стили Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
CSS-стили ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Ρ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ html-элСмСнта, Π² ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ Ρ‚Π΅Π³Π΅:
<p>
CSS-стили Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² элСмСнт <style>, находящийся Π² Ρ‚Π΅Π»Π΅ Π²Π΅Π±-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. ΠœΠ΅ΡΡ‚ΠΎ нахоТдСния элСмСнта <style> Π½Π° ΠΏΠΎΠ»Π΅ Π²Π΅Π±-страницы для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния. CSS-ΠΊΠΎΠ΄ отработаСтся Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ Π² любом случаС:
<style type=»text/css»>сСлСктор{ΠΏΡ€Π°Π²ΠΈΠ»Π°}</style>
CSS-стили находятся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ внСшнСм Ρ„Π°ΠΉΠ»Π΅, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΌ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ посрСдством элСмСнта <link>, Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠΌ Π² элСмСнт <head>:
<link rel=»stylesheet» type=»text/css» href=»style.css»>

Π’ html Π½Π°Π·Π½Π°Ρ‡Π°ΡŽ Ρ‚Π΅Π³Ρƒ <section> класс <section>.
Π’ style.css ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽ свойства ΠΈ значСния классу:
section . mainpage {…} — свойства ΠΈ значСния ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ (ΡΠΌΠΎΡ‚Ρ€ΡŽ Π² послСднСм Π₯Ρ€ΠΎΠΌΠ΅).
ΠŸΠΈΡˆΡƒ:
section.mainpage {…} (Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅Π³ΠΎΠΌ ΠΈ классом) — свойства ΠΈ значСния ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚.

Под сСлСктор «section .mainpage» ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ любой элСмСнт с классом mainpage, НАΠ₯ΠžΠ”Π―Π©Π˜Π™Π‘Π― Π’ΠΠ£Π’Π Π˜ элСмСнта section. Под сСлСктор «section.mainpage» ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ любой элСмСнт section, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ класс mainpage.

Π”Π΅Π»ΠΎ Π² ΠΏΡ€ΠΎΠ±Π΅Π»Π΅. «section .mainpage {}» — Π’ΡƒΡ‚ ΠΏΠΎΠ΄ Π½Π΅Π³ΠΎ ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ всС элСмСнты с классом ‘mainpage’, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ΄ΡƒΡ‚ послС любого <section>. «section.mainpage» — ΠΏΡ€Π°Π²ΠΈΠ»Π° примСнятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ <section> , Π½ΠΎ Π½Π΅ ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Π² Π½Π΅Π³ΠΎ элСмСнтам.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² | WebdriverIO

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» WebDriver прСдоставляСт нСсколько стратСгий Π²Ρ‹Π±ΠΎΡ€Π° для запроса элСмСнта. WebdriverIO ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ элСмСнтов. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ хотя ΠΊΠΎΠΌΠ°Π½Π΄Π° для запроса элСмСнтов называСтся $ ΠΈ $$ , ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с jQuery ΠΈΠ»ΠΈ Sizzle Selector Engine.

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ доступно Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сСлСкторов, лишь Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π³ΠΈΠ±ΠΊΠΈΠΉ способ поиска Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ элСмСнта. НапримСр, Π΄Π°Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°:

  

ΠœΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ ΠΈ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ сСлСкторы:

900 38
Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ
$('ΠΊΠ½ΠΎΠΏΠΊΠ°') 🚨 Никогда Π₯ΡƒΠ΄ΡˆΠ΅Π΅ — Ρ‚ΠΎΠΆΠ΅ ΠΎΠ±Ρ‰ΠΈΠΉ, Π±Π΅Π· контСкста.
$('.btn.btn-large') 🚨 Никогда ΠŸΠ»ΠΎΡ…ΠΎ. Π’ сочСтании со стилСм. Бильно ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ измСнСниям.
$('#main') ⚠️ Π­ΠΊΠΎΠ½ΠΎΠΌΠ½ΠΎ Π›ΡƒΡ‡ΡˆΠ΅. Но всС ΠΆΠ΅ Π² сочСтании со стилями ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ событий JS.
$(() => document. queryElement('button')) ⚠️ Π­ΠΊΠΎΠ½ΠΎΠΌΠ½ΠΎ Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ запросы, слоТныС Π² написании.
$('ΠΊΠ½ΠΎΠΏΠΊΠ°[name="submission"]') ⚠️ Π Π΅Π΄ΠΊΠΎ Π’ сочСтании с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ ΠΈΠΌΠ΅Π½ΠΈ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ сСмантику HTML.
$('button[data-testid="submit"]') βœ… Π₯ΠΎΡ€ΠΎΡˆΠΎ ВрСбуСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, Π½Π΅ связанный с a11y.
$('aria/Submit') ΠΈΠ»ΠΈ $('button=Submit') βœ… ВсСгда Π›ΡƒΡ‡ΡˆΠΈΠΉ. НапоминаСт, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ взаимодСйствуСт со страницСй.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ запросов CSS​

Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅, WebdriverIO Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ элСмСнты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ шаблон сСлСктора CSS, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

selectors/example.js

 loading... 

View on GitHub

ВСкст ссылки

To ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ якорный элСмСнт с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ тСкстом Π² Π½Π΅ΠΌ запроситС тСкст, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ со Π·Π½Π°ΠΊΠ° равСнства ( = ).

НапримСр:

selectors/example.html

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ этот элСмСнт, Π²Ρ‹Π·Π²Π°Π²:

selectors/example.js

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Частичный тСкст ссылки

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ якорный элСмСнт, Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ тСкст ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ частично соотвСтствуСт Π²Π°ΡˆΠ΅ΠΌΡƒ поисковому Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, запроситС Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ *= ΠΏΠ΅Ρ€Π΅Π΄ строкой запроса (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, *=driver ).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π·Π²Π°Π²:

selectors/example.js

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: : Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ нСсколько стратСгий сСлСктора Π² ΠΎΠ΄Π½ΠΎΠΌ сСлСкторС. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ нСсколько связанных запросов элСмСнтов для достиТСния ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ†Π΅Π»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 const elem = await $('header h2*=Welcome') // Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚!!! 
// ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто этого
const elem = await $('header'). $('*=driver')

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ тСкстом

Π’ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ ΠΊ элСмСнтам.

НапримСр, Π²ΠΎΡ‚ запрос Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° 1 уровня с тСкстом Β«Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° мою страницу»:

selectors/example.html

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ этот элСмСнт, Π²Ρ‹Π·Π²Π°Π²:

selectors/example.js

 loading... 
900 02 ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Или ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ частичный тСкст запроса:

selectors/example.js

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Π’ΠΎ ΠΆΠ΅ самоС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для id ΠΈ class ΠΈΠΌΠ΅Π½Π°:

selectors/example.html

 Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°. .. 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ этот элСмСнт, Π²Ρ‹Π·Π²Π°Π²:

selectors/example.js

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ нСсколько стратСгий Π²Ρ‹Π±ΠΎΡ€Π° Π² ΠΎΠ΄ΠΈΠ½ сСлСктор. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ нСсколько связанных запросов элСмСнтов для достиТСния ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ†Π΅Π»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 const elem = await $('header h2*=Welcome') // Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚!!! 
// вмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅
const elem = await $('header').$('h2*=Welcome')

Имя тСга​

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ элСмСнт с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚Π΅Π³Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΠ»ΠΈ .

selectors/example.html

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ этот элСмСнт, Π²Ρ‹Π·Π²Π°Π²:

selectors/example.js

 loading... 
90 020

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Атрибут ΠΈΠΌΠ΅Π½ΠΈ

Для запроса элСмСнтов с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ ΠΈΠΌΠ΅Π½ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ сСлСктор CSS3, Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ ΠΈΠΌΠ΅Π½ ΠΈΠ· JSONWireProtocol, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ [name="some-name"] Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° сСлСктора:

selectors/example.html

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

selectors/example. js

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π­Ρ‚Π° стратСгия Π²Ρ‹Π±ΠΎΡ€Π° устарСла ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² старых Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ JSONWireProtocol ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Appium.

xPath​

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ элСмСнты Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ xPath.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ xPath ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠ°ΠΊ //body/div[6]/div[1]/span[1] .

selectors/xpath.html

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Π±Π·Π°Ρ†, Π²Ρ‹Π·Π²Π°Π²:

selectors/example.js

 loading... 
90 020

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ XPath, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π²Π²Π΅Ρ€Ρ… ΠΈ Π²Π½ΠΈΠ· ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ DOM:

Selectors/example.js

 Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ... 

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π½Π° GitHub

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠΌΠ΅Π½ доступности

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ запроса ΠΏΠΎΠ΄ ΠΈΡ… доступным ΠΈΠΌΠ΅Π½Π΅ΠΌ. ДоступноС имя β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° чтСния с экрана, ΠΊΠΎΠ³Π΄Π° этот элСмСнт ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ фокус. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ доступного ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, Ρ‚Π°ΠΊ ΠΈ скрытыС тСкстовыС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ

aria-label ​

selectors/aria.html

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

selectors/example.js

 Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Fetch by

aria-labeledby ​

selectors/aria.html

 loading... 

View on GitHub

selectors/example.js

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ содСрТаниС

selectors/aria.html

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

selectors/example.js

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

9 0321 Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° ΠΏΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡƒ

сСлСкторов/ария. html

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

selectors/example.js

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Fetch by

alt свойство

selectors/aria. html

 Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°... 

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

selectors/example.js

 loading... 

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

ARIA β€” Атрибут роли​

Для запроса элСмСнтов Π½Π° основС Π ΠΎΠ»ΠΈ ARIA, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΡŒ элСмСнта Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ [role=button] Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° сСлСктора:

selectors/aria.html

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

selectors/example.js

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Атрибут ID​

БтратСгия Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€Π° "id" Π½Π΅ поддСрТиваСтся Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅ WebDriver, вмСсто этого слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стратСгии сСлСктора CSS ΠΈΠ»ΠΈ xPath для поиска элСмСнтов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ID.

Однако Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Appium You.i Engine Driver) ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ этот сСлСктор.

Π’Π΅ΠΊΡƒΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ синтаксисы сСлСктора для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°:

 //Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€ css 
const button = await $('#someid')
//Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€ xpath
const button = await $('//*[@id="someid "]')
// ID стратСгии
// ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Appium ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ поиска. "ID"
const button = await $('id=resource-id/iosname')

Ѐункция JS​

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ JavaScript для извлСчСния элСмСнтов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ собствСнных Π²Π΅Π±-API. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Π΅Π±-контСкста (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈΠ»ΠΈ Π²Π΅Π±-контСкста Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах).

Учитывая ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру HTML:

selectors/js.html

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ родствСнный элСмСнт #elem ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

selectors/example.js

 loading... 

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° GitHub

Deep БСлСкторы​

МногиС внСшниС прилоТСния сильно ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° элСмСнты с Ρ‚Π΅Π½Π΅Π²Ρ‹ΠΌ DOM. ВСхничСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ элСмСнты Π² Ρ‚Π΅Π½Π΅Π²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ DOM Π±Π΅Π· ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ. shadow$ ΠΈ shadow$ Π±Ρ‹Π»ΠΈ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ путями, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΈ свои ограничСния. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ сСлСктора Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ всС элСмСнты Π² любом Ρ‚Π΅Π½Π΅Π²ΠΎΠΌ DOM, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ запроса.

Π£ нас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ структурой:

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого сСлСктора Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ элСмСнт

И Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ View Matcher

 const menuItem = await $({ 
"name": "hasEntry",
"args": ["title", "ViewTitle"],
"class": "androidx.test.espresso.matcher.ViewMatchers"
})
await menuItem. click()

Android View Tag (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Espresso)

БтратСгия просмотра Ρ‚Π΅Π³ΠΎΠ² обСспСчиваСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ поиска элСмСнтов ΠΏΠΎ ΠΈΡ… Ρ‚Π΅Π³Ρƒ.

 const elem = await $('-android viewtag:tag_identifier') 
await elem.click()

iOS UIAutomation​

ΠŸΡ€ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ прилоТСния iOS для поиска элСмСнтов ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Apple UI Automation.

Π­Ρ‚ΠΎΡ‚ JavaScript API ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для доступа ΠΊ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΈ всСму Π½Π° Π½Π΅ΠΌ.

 const selector = 'UIATarget.localTarget().frontMostApp().mainWindow().buttons()[0]' 
const button = await $(`ios=${selector}`)
await button.click()

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ поиск ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² Π² iOS UI Automation Π² Appium, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Ρ‰Π΅ большС ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ элСмСнтов. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. здСсь.

iOS XCUITest строк ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ классов

Π’ iOS 10 ΠΈ Π²Ρ‹ΡˆΠ΅ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ XCUITest ), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π½Ρ‹Π΅ строки:

 const selector = `type == 'XCUIElementTypeSwitch' && name CONTAINS 'Allow'` 
const switch = await $(`-ios predicate string:${selector}`)
await switch. click()

И Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ классов:

 const selector = '**/XCUIElementTypeCell[`name BEGINSWITH "D"`]/**/XCUIElementTypeButton' 
const button = await $(`-ios class chain:${selector}`)
await button.click()

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступности

БтратСгия Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° доступа ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для считывания ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° элСмСнта ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ этого Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ мСняСтся Π²ΠΎ врСмя Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ процСсса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ тСкст. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² создании кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Ρ… тСстов, Ссли Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ элСмСнты ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа.

  • Для iOS это ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступности , прСдставлСнный Apple здСсь.
  • Для Android ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступности сопоставляСтся с описаниСм ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° для элСмСнта, ΠΊΠ°ΠΊ описано здСсь.

Для ΠΎΠ±Π΅ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ элСмСнта (ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов) ΠΏΠΎ ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ доступности ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ стратСгии name .

 const elem = await $('~my_accessibility_identifier') 
await elem.click()

Имя класса

Имя класса БтратСгия прСдставляСт собой строку , ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ элСмСнт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ прСдставлСнии.

  • Для iOS это ΠΏΠΎΠ»Π½ΠΎΠ΅ имя класса UIAutomation, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с UIA-, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ UIATextField для тСкстового поля. ΠŸΠΎΠ»Π½ΡƒΡŽ ссылку ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.
  • Для Android это ΠΏΠΎΠ»Π½ΠΎΠ΅ имя класса UI Automator, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ android.widget.EditText для тСкстового поля. ΠŸΠΎΠ»Π½ΡƒΡŽ ссылку ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.
  • Для Youi.tv это ΠΏΠΎΠ»Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ класса Youi.tv, ΠΈ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ с CYI-, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ CYIPushButtonView для элСмСнта ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠŸΠΎΠ»Π½ΡƒΡŽ ссылку ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° страницС GitHub You.i Engine Driver
 // ΠΏΡ€ΠΈΠΌΠ΅Ρ€ iOS 
await $('UIATextField').click()
// ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Android
await $('android. widget.DatePicker') .click()
// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Youi.tv
await $('CYIPushButtonView').click()

Π¦Π΅ΠΏΠ½Ρ‹Π΅ сСлСкторы

нашСл ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ элСмСнт. Если Π²Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚Π΅ элСмСнт ΠΏΠ΅Ρ€Π΅Π΄ вашСй фактичСской ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, WebdriverIO запускаСт запрос ΠΈΠ· этого элСмСнта.

НапримСр, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ структура DOM, такая ΠΊΠ°ΠΊ:

 
















И Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€ B Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ, это Π±ΡƒΠ΄Π΅Ρ‚ слоТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сСлСктора CSS.

Π‘ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΎΠΉ сСлСкторов всС Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡΡƒΠ·ΡŒΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹ΠΉ элСмСнт шаг Π·Π° шагом:

 await $('. row .entry:nth-child(2)').$('button*=Add').click() 

Appium Image Selector​

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ поиска -image , ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Appium Ρ„Π°ΠΉΠ» изобраТСния, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ элСмСнт, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² jpg,png,gif,bmp,svg

ΠŸΠΎΠ»Π½Ρ‹ΠΉ справочник ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь

 const elem = await $('./file/path/of/image/test.jpg') 
await elem.click()

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ . Бпособ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Appium с этим сСлСктором Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ снимок экрана (прилоТСния) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ прСдоставлСнный сСлСктор ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ элСмСнт Π½Π° этом снимкС экрана (прилоТСния).

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Appium ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ сдСланного снимка экрана (прилоТСния), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ соотвСтствовал Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ CSS экрана вашСго (прилоТСния) (это ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π½Π° iPhone, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Mac с дисплССм Retina, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ DPR большС 1). Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ совпадСниС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ прСдоставлСнный сСлСктор ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ взят ΠΈΠ· исходного снимка экрана. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это, ΠΎΠ±Π½ΠΎΠ²ΠΈΠ² настройки Appium Server, см. Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Appium. для настроСк ΠΈ этот ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ объяснСниСм.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ React​

WebdriverIO прСдоставляСт способ Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² React Π½Π° основС ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Для этого Ρƒ вас Π΅ΡΡ‚ΡŒ Π½Π° Π²Ρ‹Π±ΠΎΡ€ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: react$ ΠΈ react$$.

Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ· React VirtualDOM ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΎΠ΄ΠΈΠ½ элСмСнт WebdriverIO, Π»ΠΈΠ±ΠΎ массив элСмСнтов (Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, какая функция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ).

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ : ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ $ ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ $ $ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ react$$ Π²Π΅Ρ€Π½Π΅Ρ‚ всС ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… экзСмпляров Π² Π²ΠΈΠ΄Π΅ массива элСмСнтов WebdriverIO, Π° react$ Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ экзСмпляр.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ примСр​
 // index.jsx 
import React from 'react'
import ReactDOM from 'react-dom'

function MyComponent() {
return (


MyComponent

)
}

function App() {
return ()
}

ReactDOM.render(, document.querySelector('#root'))

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ простой экзСмпляр MyComponent Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ React ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ HTML элСмСнт с id="root" .

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ browser.react$ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ экзСмпляр MyComponent.0003 myCmp пСрСмСнная, с Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ элСмСнта.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ WebdriverIO ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ, позволяСт Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ваш Π²Ρ‹Π±ΠΎΡ€ ΠΏΠΎ свойствам ΠΈ/ΠΈΠ»ΠΈ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Для этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ для Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π° ΠΈ/ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ для состояния Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

 // index.jsx 
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ React ΠΈΠ· 'Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ'
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ReactDOM ΠΈΠ· 'Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ-Π΄ΠΎΠΌ'

function MyComponent(props) {
return (


ΠŸΡ€ΠΈΠ²Π΅Ρ‚ { props.name || 'ΠœΠΈΡ€' }!

)
}

function App() {
return (





)
} 9000 7

Π Π΅Π°ΠΊΡ‚Π”ΠžΠœ .render(, document.querySelector('#root'))

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ экзСмпляр MyComponent с ΠΈΠΌΠ΅Π½Π΅ΠΌ prop ΠΊΠ°ΠΊ WebdriverIO , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

 const myCmp = await browser.react$('MyComponent', { 
props: { name: 'WebdriverIO' }
})

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ наш Π²Ρ‹Π±ΠΎΡ€ ΠΏΠΎ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, ΠΊΠΎΠΌΠ°Π½Π΄Π° browser выглядСла Π±Ρ‹ Ρ‚Π°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

 const myCmp = await browser.react$('MyComponent', { 
state: { myState: 'some value' }
})
Π Π°Π±ΠΎΡ‚Π° с
React. Fragment ​

ΠŸΡ€ΠΈ использовании 90 003 react$ для Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² React, WebdriverIO Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ элСмСнт этого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² качСствС ΡƒΠ·Π»Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ react$$ , Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ массив, содСрТащий всС ΡƒΠ·Π»Ρ‹ HTML Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… сСлСктору.

 // index.jsx 
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ React ΠΈΠ· 'Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ'
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ReactDOM ΠΈΠ· 'Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ-Π΄ΠΎΠΌ'

function MyComponent() {
return (


MyComponent


MyComponent


)
}

function App() {
return ()
}

ReactDOM.render(, document.querySelector('#root'))

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 await browser.react$('MyComponent ') // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ элСмСнт WebdriverIO для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ 

await browser.react$$('MyComponent') // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ элСмСнты WebdriverIO для массива [
,
]

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Если Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько экзСмпляров MyComponent ΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ react$$ для Π²Ρ‹Π±ΠΎΡ€Π° этих ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°, Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив всСх ΡƒΠ·Π»ΠΎΠ². Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ 3 экзСмпляра , Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ массив с ΡˆΠ΅ΡΡ‚ΡŒΡŽ элСмСнтами WebdriverIO.

Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ настраиваСмых сСлСкторов​

Если Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ трСбуСтся особый способ извлСчСния элСмСнтов, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сами ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ сСлСкторов, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с custom$ ΠΈ custom$$ . Для этого зарСгистрируйтС свою ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² Π½Π°Ρ‡Π°Π»Π΅ тСста:

 browser.addLocatorStrategy('myCustomStrategy', (сСлСктор, ΠΊΠΎΡ€Π΅Π½ΡŒ) => { 
/**
* ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°
* ΠΈ ` root`, Ссли вызываСтся для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° элСмСнта
*/
const scope = root ? Π±Π°Ρ€Ρ„Ρƒ