рд▓реЗрдЯрд┐рд╖ + рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХ рдкрд░реАрдХреНрд╖рдг

рдкрд░рд┐рдЪрдп


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

рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рдмрдврд╝рд┐рдпрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдШрдЯрдХреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреВрдЖрдИ-рддрддреНрд╡ ) рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛рдлреА рдмрдбрд╝реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдХрдИ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреГрд╖реНрда рд╕рдВрд░рдЪрдирд╛ рдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рдж, рд▓рдЧрднрдЧ рд╣рд░ рдкрд░реАрдХреНрд╖рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкреВрд░реЗ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рддреБрд░рдВрдд рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рдмрд╛рдж, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЕрдм рдЗрддрдиреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд▓рдЧрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣рд╛рдБ рд╕реЗрд▓реЗрдирд┐рдпрдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВ, рдЬреЛ рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рд╕реЗ рдЬреБрдбрд╝реА рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкреНрд░рд▓реЗрдЦрди )

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЧреНрд░рд╛рд╣рдХ рдкрд░реАрдХреНрд╖рдг рдХреА рдХреНрд╖рдорддрд╛рдУрдВ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ django рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ) рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рдпрдерди-рд╕реЗрд▓реЗрдирд┐рдпрдо рд▓реЗрдЯрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред


рд▓реЗрдЯреНрдпреВрд╕ + рд╕реЗрд▓реЗрдирд┐рдпрдо


рдЖрдЗрдП рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рдпреЗ рдШрдЯрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ:

рдЕрдЬрдЧрд░-рд╕реЗрд▓реЗрдирд┐рдпрдо


рд╕рд▓рд╛рдж рдкрддреНрддрд╛


рдФрд░ рддреБрд░рдВрдд рдпреБрджреНрдз рдореЗрдВ


рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рд▓реЗрдЯрд╕ + рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдореБрдЦреНрдп рдкрд╣рд▓реБрдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди

рдЖрдкрдХреЛ 2 рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░реЗрдВрдЧреЗ:
рд░рдЬрд┐рд╕реНрдЯрд░:
  1. рдкрдВрдЬреАрдХрд░рдг рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдВ
  2. рдкрдВрдЬреАрдХрд░рдг рдлрд╛рд░реНрдо рдкрд░ рдлрд╝реАрд▓реНрдб рднрд░реЗрдВ
  3. рдкрдВрдЬреАрдХрд░рдг рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
  4. рд╕рдлрд▓ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рджреЗрдЦреЗрдВ

рдкреНрд░рд╛рдзрд┐рдХрд░рдг:
  1. рд▓реЙрдЧрдЗрди рдкреЗрдЬ рдкрд░ рдЬрд╛рдПрдВ
  2. рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдлрд╝реЙрд░реНрдо рдкрд░ рдлрд╝реАрд▓реНрдб рднрд░реЗрдВ
  3. рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
  4. рд╕рдлрд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рджреЗрдЦреЗрдВ


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

рдХрд╛рд░реНрдп рдкреВрд░реНрдг рд╣реЛрдирд╛

рд╣рдорд╛рд░реЗ django рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓реЗрдЯреНрдпреВрд╕ рдХреЛ рдЬреЛрдбрд╝рдХрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдФрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдкреИрдХреЗрдЬ рдФрд░ рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рд▓реЗрдЯреЗрд╕ рдФрд░ рд╕реЗрд▓реЗрдирд┐рдпрдо рд╣реИрдВ), рд╣рдо рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреБрдирд╢реНрдЪ: рдЖрдкрдХреЛ рдмрд┐рдирд╛ рд╕рд┐рд░ рдореЛрдб рдореЗрдВ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП xvfb рдФрд░ pyvirtualdisplay рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ

рд▓реЗрдЯрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреА рд╣реЛрдВрдЧреА:

рдЕрдкрдиреЗ рдЖрдк рд╕реЗ, рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╡рд╛рд▓реА рдПрдХ рдлрд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реЛ (рд╕реЗрд▓реЗрдирд┐рдпрдо рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдкреЗрдЬрдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдорд╛рди)ред рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рдореИрдкрд┐рдВрдЧ рдПрд░реЛрдорд╛рдб рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдореЗрдВ рдбрд╛рд▓ рджреЗрдВред рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдкреГрд╖реНрда рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдпрд╣ рдкреГрдердХреНрдХрд░рдг рд▓реЗрдЖрдЙрдЯ рдмрджрд▓рддреЗ рд╕рдордп рд╕реНрд╡рдпрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ: рдорд╛рдирдЪрд┐рддреНрд░рдг рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкреГрд╖реНрда рдХреЛ рд╕рд╣реА рдХрд░реЗрдВред рдпрд╣ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдкрдардиреАрдпрддрд╛ рдХреЛ рднреА рдХрд╛рдлреА рдмрдврд╝рд╛рддрд╛ рд╣реИ (рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред

mapping.py

host_url = 'http://example.com' site_mapping = { "registration": { "url": host_url + "/registration/", "username": "//input[@id='username']", "email": "//input[@id='email']", "password": "//input[@name='password1']", "verify password": "//input[@name='password2']", "signup button": "//button[@name='signup']", "status message": "//div[@id='status']", }, "authorization": { "url": host_url + "/login/", "username": "//input[@id='username']", "password": "//input[@name='password']", "login button": "//button[@name='login']", "status message": "//div[@id='status']", }, } 

PS: рдореИрдВ xpath рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддрддреНрд╡реЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ

terrain.py

 from lettuce import before, after, world from selenium import webdriver from mapping import site_mapping @before.harvest def setup(server): # world - ,  lettuce    , ..       world.browser = webdriver.Firefox() #   world.mapping = site_mapping #    world @after.all def teardown(total): world.browser.close() #   


myapp / features / Cort.feature

 Feature: Authorization Scenario: Registration Open "registration" page Fill "username" with "myusername" Fill "email" with "user@example.com" Fill "password" with "1234" Fill "verify password" with "1234" Click "signup button" See "Welcome aboard" in "status message" Scenario: Authorization Open "authorization" page Fill "username" with "myusername" Fill "password" with "1234" Click "login button" See "Hello! Again..." in "status message" 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддрддреНрд╡реЛрдВ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдХрдореА рдиреЗ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреА рдкрдардиреАрдпрддрд╛ рдореЗрдВ рдПрдХ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдИред рдЗрд╕рдХреЗ рд▓рд┐рдП mapping.py рдзрдиреНрдпрд╡рд╛рдж

myapp / features / steps.py

 from lettuce import step, world @step(r'Open "(.*)" page') def open_page(step, page): world.current_page = world.mapping[page] #  url   world.browser.get(world.current_page['url']) #   url   @step(r'Fill "(.*)" with "(.*)"') def fill_element_with_text(step, element, value): elem = world.browser.find_element_by_xpath(world.current_page[element]) elem.send_keys(value) @step(r'Click "(.*)"') def i_click_xpath(step, element): elem = world.browser.find_element_by_xpath(world.current_page[element]) elem.click() @step(r'See "(.*)" in "(.*)"') def i_see_text_in_element(step, text, element): elem = world.browser.find_element_by_xpath(world.current_page[element]) assert elem.text == text 


рд╡рд╣ рд╕рдм рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ (рдпрд╛ рдирд╣реАрдВ) рдХреИрд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред

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

рдкрд░рд┐рдгрд╛рдо


рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╢реЗрд╖ рд░рд╛рд╢рд┐ рдХреНрдпрд╛ рд╣реИ:


рд╡рд┐рд╖рдп рдкрд░ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:




рдкреБрдирд╢реНрдЪ: рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА рдФрд░ рдпрдереЛрдЪрд┐рдд рдЙрди рдиреБрдХрд╕рд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рд▓реЗрдЯреЗрд╕ + рд╕реЗрд▓реЗрдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдерд╛ред рдореБрдЭреЗ рдЖрдкрдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

PPS: рдореИрдВ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреА рд╢реИрд▓реА, рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдкрд╣рд▓рд╛ рд▓реЗрдЦ рдФрд░ рд╡рд╣ рд╕рдм ...

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


All Articles