Π‘Π΅Π»Π΅ΠΊΡΠΎΡΡ β ΠΡΠ½ΠΎΠ²Ρ CSS β HTML Academy
ΠΠ°Π³ΡΡΠ·ΠΊΠ°β¦
Π§Π΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ Π²ΡΡ Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠΎΠ²ΠΎ
- index.html
- style.css
<!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.
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; }
Π§ΡΠΎ Π²Β Π·Π°Π΄Π°Π½ΠΈΠΈ Π²Π°ΠΌ Π½Π΅Β ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΠΎΡΡ?
ΠΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ΄Π°ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ΠΠ΅ΠΏΠΎΠ½ΡΡΠ½Π°Ρ ΡΠ΅ΠΎΡΠΈΡΠΡΡΠ³ΠΎΠ΅ (ΡΠ΅ΠΉΡΠ°Ρ Π½Π°ΠΏΠΈΡΡ)
ΠΡΡΠ³ΠΎΠ΅ (ΡΠ΅ΠΉΡΠ°Ρ Π½Π°ΠΏΠΈΡΡ)
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ! ΠΡΒ ΡΠΊΠΎΡΠΎ Π²ΡΡ ΠΈΡΠΏΡΠ°Π²ΠΈΠΌ)
ΠΠΎΠ΄ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ, Π½Π°ΠΆΠΌΠΈΡΠ΅ Β«ΠΠ±Π½ΠΎΠ²ΠΈΡΡΒ» ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ.
ΠΡΒ ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈ Π½Π°Β Π΄ΡΡΠ³ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ
ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π²Π½ΡΡΡΠΈ ΠΌΠΈΠ½ΠΈ-Π±ΡΠ°ΡΠ·Π΅ΡΠ°, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠΊΡΡ Π² ΡΡΠΎ ΠΎΠΊΠ½ΠΎ.
ΠΠ°Π΄Π°ΡΠΈΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ- ΠΒ CSS-ΠΏΡΠ°Π²ΠΈΠ»Π΅ Π½Π°Β 25 ΡΡΡΠΎΠΊΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ Π·Π°Π³Π»ΡΡΠΊΡ
selector
Π½Π°Β ΡΠ΅Π»Π΅ΠΊΡΠΎΡ.avatar
, - Π°Β Π·Π°ΡΠ΅ΠΌ Π½Π°Β 35 ΡΡΡΠΎΠΊΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ Π·Π°Π³Π»ΡΡΠΊΡ
selector
Π½Π°Β ΡΠ΅Π»Π΅ΠΊΡΠΎΡnav a
(Π΄Π°, ΡΒ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠΌ, ΠΏΠΎΠ·ΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΏΠΎΡΠ΅ΠΌΡ).
CSS | Π‘Π΅Π»Π΅ΠΊΡΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»Π°
Π‘Π΅Π»Π΅ΠΊΡΠΎΡ CSS β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ (ΠΌΠ°ΡΠΊΠ΅Ρ) Π±ΡΠ°ΡΠ·Π΅ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΠ»ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΡΠΈΠ»Π΅Π²ΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ html-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
- Π‘ΡΠΈΠ»Π΅Π²ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ
- CSS-ΡΡΠΈΠ»ΠΈ
- ΠΡΠ°Π²ΠΈΠ»ΠΎ CSS
- Π‘Π΅Π»Π΅ΠΊΡΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»Π° CSS
- Π‘Π΅Π»Π΅ΠΊΡΠΎΡ html-ΡΠ΅Π³ΠΎΠ²
- Π‘Π΅Π»Π΅ΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ²
- Π‘Π΅Π»Π΅ΠΊΡΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ²
Π‘ΡΠΈΠ»Π΅Π²ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ
Π‘ΡΠΈΠ»Π΅Π²ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ html-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° β Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π²ΠΈΠ΄Π° ΠΈ ΠΌΠ΅ΡΡΠ° Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅. Π‘ΡΠΈΠ»Π΅Π²ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π°ΠΏΠΈΡΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ CSS-ΡΡΠΈΠ»Ρ, ΡΠΎΡΡΠΎΡΡΡΡ ΠΈΠ· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠ΅ΠΌ, Ρ ΡΠΎΡΠΊΠΎΠΉ Ρ Π·Π°ΠΏΡΡΠΎΠΉ Π² ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ.
ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ: Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅;
CSS-ΡΡΠΈΠ»ΠΈ
CSS-ΡΡΠΈΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ html-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ β ΡΠ²Π΅Ρ, ΡΡΠΈΡΡ, ΡΠ°Π·ΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠ°, ΡΠΏΠΈΡΠΊΠ°, Π°Π±Π·Π°ΡΠ° β¦ Π Π°Π·Π»ΠΈΡΠ°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΡΠΈΠ»Ρ html-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠΈΠ»Π΅ΠΉ CSS (Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅). Π’Π°Π±Π»ΠΈΡΡ ΡΡΠΈΠ»Π΅ΠΉ CSS, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ β Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ html-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. Π‘Π²ΡΠ·Π°ΡΡ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΡΠΈΠ»Ρ html-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈ ΡΠ°ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΠΊΠ°Π·Π°ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ html-ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΡΠΈΠ»Ρ, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ°ΡΠΊΠ΅Ρ β
ΠΡΠ°Π²ΠΈΠ»ΠΎ CSS
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ (Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅) ΡΠ°Π±Π»ΠΈΡΡ CSS-ΡΡΠΈΠ»Π΅ΠΉ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· ΠΏΡΠ°Π²ΠΈΠ» ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ 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
HTML
<div class=βred123β>ΠΊΡΠ°ΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ</div>
<p class=βred123β>ΠΊΡΠ°ΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ</p>
<h4 class=βred123β>ΠΊΡΠ°ΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ</h4>
Π‘Π΅Π»Π΅ΠΊΡΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ²
ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΡΠΎΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ: ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Β«idΒ» ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ HTML. Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΎΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ², ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ Β«idΒ» β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ. ΠΠΌΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ (ΠΏΡΠΈΠ΄ΡΠΌΡΠ²Π°Π΅ΡΡΡ Π°Π²ΡΠΎΡΠΎΠΌ) ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΏΡΠΈΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠ΅Π΄ΠΈ ΡΠ΅ΡΠ΅ΡΠΊΠ°. ΠΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΎΡ ΠΊΠ»Π°ΡΡΠ°: ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Ρ, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΡΠΊΠΎΡΡΡ
-html ΠΈ jΠ°vascript Π΄Π»Ρ Π½Π°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅. ΠΡΠ±ΠΈΡΠ°Ρ ΠΈΠΌΡ, Π²Π°ΠΆΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡΡΡ ΠΈ Π½Π΅ ΡΠ±ΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΡΡΡΠ°Π½ΠΈΡΡ.
#red123{color:red;}
HTML
<div id=βred123β>ΠΊΡΠ°ΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π΄Π΅ΡΡ !!!</div>
ΠΠ»Π°ΡΡΡ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΊΠ»Π°ΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ. ΠΠ»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠ°ΠΊΠΎΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π²Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΠ΅ΡΡΡΠ°Π»ΡΡΠΈΠΊΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΎΠ² Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠ²Π½Ρ Π½Π°ΡΠ»Π΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΎΠ² ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΎΠ² Π·Π° ΡΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΏΡΠ΅Π²Π΄ΠΎ-ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
β ΡΠ°ΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠ°, Π»ΡΠ±ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π² ΠΌΠ°ΡΠΊΠ΅*
Π°[Π°ΡΡΠΈΠ±ΡΡ*=»Π»ΡΠ±ΠΎΠ΅_ΡΠ»ΠΎΠ²ΠΎ_Π²_ΠΌΠ°ΡΠΊΠ΅»]
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{ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ: Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅;} /* ΠΠ»ΡΠ±ΠΆΠ΅ Π²ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΠΈ Π·Π°ΡΠΎΠ²ΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π΅ Π½Π°Π΄ΠΎ. */
Π‘Π΅Π»Π΅ΠΊΡΠΎΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (ΡΠ΅Π»Π΅ΠΊΡΠΎΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ) Π²ΡΠ±Π΅ΡΠ΅Ρ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠ° (ΡΠ»Π΅ΠΌΠ΅Π½Ρ 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 + 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.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΎΠ², Π»ΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π³ΠΈΠ±ΠΊΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠΈΡΠΊΠ° Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π°Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°:
id="main"
class="btn btn-large"
name="submission"
role="button"
data-testid="submit"
>
Submit
ΠΡ Π΄Π΅Π»Π°Π΅ΠΌ ΠΈ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ:
Π‘Π΅Π»Π΅ΠΊΡΠΎΡ | Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ |
---|---|---|
$('ΠΊΠ½ΠΎΠΏΠΊΠ°') | π¨ ΠΠΈΠΊΠΎΠ³Π΄Π° | Π₯ΡΠ΄ΡΠ΅Π΅ — ΡΠΎΠΆΠ΅ ΠΎΠ±ΡΠΈΠΉ, Π±Π΅Π· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°. |
$('.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, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ±ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π·Π°ΠΏΡΠΎΡΠ°.Π£ Π½Π°Ρ Π΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ:
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΠΎΡΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π»ΠΎΠΆΠ΅Π½ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅Π½Π΅Π²ΠΎΠΉ DOM, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
selectors/example.js
loading ...
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° GitHub
ΠΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ
ΠΠ»Ρ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠ²Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΡΡ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΠ»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΆΠ΅ΡΡΠΎΠ² Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π² ΠΈΠ΄Π΅Π°Π»Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π°ΡΡΡΠΎΠ΅Π½ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. ΠΠΎ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ· DOM Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π°ΡΡΡΠΎΠ΅Π½ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²Π΅Π±-ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. Π’ΠΎΠ»ΡΠΊΠΎ , ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π²ΡΡΠ΅.
ΠΠ»Ρ Π½Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΈ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΏΠΎΠΈΡΠΊΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
Android UiAutomatorβ
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Android UI Automator ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ API Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΎΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΊΠ»Π°ΡΡ UiSelector, Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Π Appium Π²Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄ Java Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΅Π³ΠΎ Π² ΡΡΠ΅Π΄Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.
const selector = 'new UiSelector().text("Cancel").className("android.widget.Button")'
const button = await $(`android=${selector}`)
await button.click ()
Android DataMatcher ΠΈ ViewMatcher (ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠΏΡΠ΅ΡΡΠΎ)β
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ Android DataMatcher ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Data Matcher : ["title", "ViewTitle"]
})
await menuItem.click()
Π Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ 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 ΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ
- ΠΠ»Ρ 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 ? Π±Π°ΡΡΡ