рдкрд╛рдпрдерди + рдкреЗрдЬреЗрдЯ рдореЗрдВ рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛

рдЬрдм рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рдореИрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдпрд╛ - "рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкрд╛рдпрдерди-рдкрд┐рдПрд╕реНрдЯреЗрд╕реНрдЯ рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП?"ред рдЗрдВрдЯрд░рдиреЗрдЯ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдФрд░ рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд┐рд▓рд╛: рд╢реИрдХреНрд╖рд┐рдХ рд▓реЗрдЦ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рдереЗред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╡рд┐рдЪрд╛рд░ рдкрд╛рдпрдерди + рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕реБрд▓рдн рднрд╛рд╖рд╛ рдореЗрдВ рд╕рдордЭрд╛рдиреЗ рдХрд╛ рд╣реИред


рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрдпрд╛ рд╣реИ


рдпрд╣ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреИрдЯрд░реНрди рд╣реИ рдЬреЛ рд╡реЗрдм рдЙрддреНрдкрд╛рдж рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрдереНрдп рд╣реИред рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдкрд░реАрдХреНрд╖рдг рддрд░реНрдХ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИред


рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реЗрдм рдкреЗрдЬ рдХреЛ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд░рд╣рддрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЙрд╕ рд╡рд░реНрдЧ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдкреГрд╖реНрда рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред


рдкреГрд╖реНрда рдСрдмреНрдЬреЗрдХреНрдЯ рднрд╛рдЧреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:


  • рдмреЗрд╕ рдкреЗрдЬ \ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ - рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
  • рдкреГрд╖реНрда рдСрдмреНрдЬреЗрдХреНрдЯ \ рдкреГрд╖реНрда рдХрдХреНрд╖рд╛ - рд╡реЗрдм рдкреЗрдЬреЛрдВ рдкрд░ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗред
  • рдЯреЗрд╕реНрдЯ - рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреИрдЯрд░реНрди рдХреА рд╕реНрдХреАрдорд╛ред
рдЫрд╡рд┐
рд╡рд┐рд╖рдп рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╣рд┐рд╕реНрд╕рд╛


рдЪрд░рдг :


  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓рддрд╛ рд╣реИ;
  2. рдкрддрд╛ рдмрд╛рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ https://ya.ru/ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ;
  3. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦреЛрдЬ рдмрд╛рд░ рдореЗрдВ "рд╣реИрд▓реЛ" рд╢рдмреНрдж рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ;
  4. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рдЦреЛрдЬ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИред

рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо :
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЦреЛрдЬ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдЙрдк-рдЖрдЗрдЯрдо (рд╡реАрдбрд┐рдпреЛ, рдЪрд┐рддреНрд░ рдЖрджрд┐) рд╣реЛрддреЗ рд╣реИрдВред


рдЬрд╛рдБрдЪ рдХрд░реЗрдВ : рдЦреЛрдЬ рдкреГрд╖реНрда рдкрд░ рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдФрд░ "рдЪрд┐рддреНрд░" рдФрд░ "рд╡реАрдбрд┐рдпреЛ" рдХреЗ рддрддреНрд╡ рд╣реИрдВред


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛


рд▓реЗрдЦ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╛рдпрдерди, рдУрдУрдкреА рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛, рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛ред


рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: рд╕реЗрд▓реЗрдирд┐рдпрдо рдФрд░ рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкрд╛рдЗрдк рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


pip install selenium pip install pytest 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдмреНрд░рд╛рдЙрдЬрд░ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред рдпрд╣ рд▓реЗрдЦ рдХреНрд░реЛрдо рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд░рдЦреЗрдВред


рд╕реНрдерд┐рд░рддрд╛ рдмрдирд╛рдПрдБ


рдкрд╣рд▓реЗ рдЖрдкрдХреЛ WebDriver рдХреЗ рд▓рд┐рдП рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдЗрд╕реЗ рдЬреБрдбрд╝рдирд╛рд░ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░реЗрдВрдЧреЗред рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдореЗрдВ рдлрд┐рдХреНрд╕реНрдЪрд░ рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬрд┐рдирдХреА рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрдкрдиреА рдЖрд╡рдзрд┐рдХрддрд╛ рд╣реИред
рдпрд╣ рдпреВрдирд┐рдЯреЗрд╕реНрдЯ рдореЗрдВ рд╕реЗрдЯрдЕрдк рдФрд░ рдЯрд┐рдпрд░рдбрд╛рдЙрди рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИред рдлрд┐рдХреНрд╕реНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдореЗрдВ рдлрд╝рд┐рдХреНрдЪрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд░рдХреНрд╖рд┐рдд рдирд╛рдо рд╣реИ - conftest.py ред


рд╣рдо conftest.py рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд╛рдо - рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рд╣рдо рдЗрд╕реЗ @ pytest.fixture рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рддреНрд░ рдорд╛рди рдХреЗ рд╕рд╛рде рд╕реНрдХреЛрдк рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕ рдлрд┐рдХреНрд╕реЗрд╢рди рдлрдВрдХреНрд╢рди рдХреЛ рдкреНрд░рддрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рддреНрд░ рдореЗрдВ рдХреЗрд╡рд▓ 1 рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


 import pytest from selenium import webdriver @pytest.fixture(scope="session") def browser(): driver = webdriver.Chrome(executable_path="./chromedriver") yield driver driver.quit() 

рдЕрдЧрд▓рд╛, рд╣рдо рдЙрд╕ рднрд╛рдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреНрд░реЛрдореЗрдбреНрд░рд┐рд╡рд░ рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо рдЙрдкрдЬ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ - рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рджред


"рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж" рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдХрд╛рд░реНрдп рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рддреНрд░ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдорд╛рд░рддрд╛ рд╣реИред


рдЖрдзрд╛рд░ рдкреГрд╖реНрда


BaseApp.py рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред рдмреЗрд╕рдкреЗрдЬ рдХреНрд▓рд╛рд╕ рдореЗрдВ, рд╣рдо рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


 from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC class BasePage: def __init__(self, driver): self.driver = driver self.base_url = "https://ya.ru/" def find_element(self, locator,time=10): return WebDriverWait(self.driver,time).until(EC.presence_of_element_located(locator), message=f"Can't find element by locator {locator}") def find_elements(self, locator,time=10): return WebDriverWait(self.driver,time).until(EC.presence_of_all_elements_located(locator), message=f"Can't find elements by locator {locator}") def go_to_site(self): return self.driver.get(self.base_url) 

рдмреЗрд╕рдкреЗрдЬ рдХреНрд▓рд╛рд╕ рдореЗрдВ, рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдмрдирд╛рдПрдВ рдЬреЛ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ - рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред рдЖрдзрд╛рд░_ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреГрд╖реНрда рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо find_element (рдПрдХ рддрддреНрд╡ рдХреА рдЦреЛрдЬ рдФрд░ рдЗрд╕реЗ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ) рдФрд░ find_elements (рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдФрд░ рдПрдХ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдЯрд░реНрди) рдХреЗ рддрд░реАрдХреЗ рдмрдирд╛рддреЗ рд╣реИрдВред


рдпрд╣ WebdriverWait рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИ, рдЬреЛ рд╕реЗрд▓реЗрдирд┐рдпрдо рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред


рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 10 рд╕реЗрдХрдВрдб рд╣реИред рдпрд╣ рдЖрдЗрдЯрдо рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред Go_to_site рд╡рд┐рдзрд┐ - рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рд╕рдВрдХреЗрддрд┐рдд рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП base_url рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред


рдкреГрд╖реНрда рд╡рд╕реНрддреБ


рд╣рдорд╛рд░реА рд╡реЗрдм рдкреЗрдЬ рдХреНрд▓рд╛рд╕ YandexPages.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИред


 from BaseApp import BasePage from selenium.webdriver.common.by import By class YandexSeacrhLocators: LOCATOR_YANDEX_SEARCH_FIELD = (By.ID, "text") LOCATOR_YANDEX_SEARCH_BUTTON = (By.CLASS_NAME, "search2__button") LOCATOR_YANDEX_NAVIGATION_BAR = (By.CSS_SELECTOR, ".service__name") class SearchHelper(BasePage): def enter_word(self, word): search_field = self.find_element(YandexSeacrhLocators.LOCATOR_YANDEX_SEARCH_FIELD) search_field.click() search_field.send_keys(word) return search_field def click_on_the_search_button(self): return self.find_element(YandexSeacrhLocators.LOCATOR_YANDEX_SEARCH_BUTTON,time=2).click() def check_navigation_bar(self): all_list = self.find_elements(YandexSeacrhLocators.LOCATOR_YANDEX_NAVIGATION_BAR,time=2) nav_bar_menu = [x.text for x in all_list if len(x.text) > 0] return nav_bar_menu 

рд╣рдо рд╡рд░реНрдЧ YandexSeacrhLocators рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣ рдХреЗрд╡рд▓ рд▓реЛрдХреЗрдЯрд░реЛрдВ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ред
рдХрдХреНрд╖рд╛ рдореЗрдВ, рд╣рдо рд▓реЛрдХреЗрдЯрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:


LOCATOR_YANDEX_SEARCH_FIELD - рдЦреЛрдЬ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЛрдХреЗрдЯрд░
LOCATOR_YANDEX_SEARCH_BUTTON - "рдвреВрдВрдвреЗрдВ" рдмрдЯрди рдХреЗ рд▓реЛрдХреЗрдЯрд░
LOCATOR_YANDEX_NAVIGATION_BAR - рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рд▓реЛрдХреЗрдЯрд░ (рдЪрд┐рддреНрд░, рд╡реАрдбрд┐рдпреЛ, рдЖрджрд┐)


BasePage рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдХреЗ рдПрдХ рдХреНрд▓рд╛рд╕ SearchHelper рдмрдирд╛рдПрдВред


рд╣рдо рдЦреЛрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рддрд░реАрдХреЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
enter_word - рдЦреЛрдЬ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдПрдХ рддрддреНрд╡ рдХреЛ рдЦреЛрдЬрддрд╛ рд╣реИ, рдЦреЛрдЬ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╢рдмреНрдж рдХреЛ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ;
click_on_the_search_button - рдЦреЛрдЬ рдмрдЯрди рдХреЗ рдПрдХ рддрддреНрд╡ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ;
check_navigation_bar - рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╛рда рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╢рд░реНрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рд╢реВрдиреНрдп рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдЖрдЗрдЯрдо рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдордп рдХреЛ 2 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред


рдЯреЗрд╕реНрдЯ


 from YandexPages import SearchHelper def test_yandex_search(browser): yandex_main_page = SearchHelper(browser) yandex_main_page.go_to_site() yandex_main_page.enter_word("Hello") yandex_main_page.click_on_the_search_button() elements = yandex_main_page.check_navigation_bar() assert "" and "" in elements 

рд╣рдо рдкрд░реАрдХреНрд╖рдг рдлрд╝рдВрдХреНрд╢рди test_yandex_seacrh рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдерд┐рд░рддрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред рдЕрдЧрд▓рд╛, рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдкреГрд╖реНрда рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ - yandex_main_pageред рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ, рд╣рдо рдкреГрд╖реНрда рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред рдлрд╝рдВрдХреНрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рддрд░реНрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред


рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдХреАрдо рдХреЗ рд╕рдорд╛рди рд╣рдордиреЗ рд╡рд╣ рд╕рдм рдХреБрдЫ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░ рджрд┐рдпрд╛ рдЬреЛ рд╣рдордиреЗ рд╕реНрдХреАрдо рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдерд╛ред рд▓реЗрдЦ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдо рдХреЗ рддрд╣рдд рдмреНрд▓реЙрдХ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред


рдЫрд╡рд┐


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдкреИрдЯрд░реНрди рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред


рдореИрдВ рд╕рдорд╛рдкреНрдд рднрдВрдбрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/hi472156/


All Articles