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

рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдореИрдВ рдореВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдореИрдВ рдЕрдкрдирд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рджреВрдВрдЧрд╛:
- рдЙрдмреБрдирд┐рдпрди рдмрд╛рдпреЛрдирд┐рдХ рдмреАрд╡рд░
- PHP 7.1.19-1
- рд╕рдВрдЧреАрддрдХрд╛рд░ - PHP рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдмрдВрдзрдХ, рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд
- PhpStorm - рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг
рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- Chromedriver 2.41 (рд▓рд┐рдВрдХ рди рдХреЗрд╡рд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдбреНрд░рд╛рдЗрд╡рд░ рдЖрдкрдХреЗ рдХреНрд░реЛрдо рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ)
- рдХреНрд░реЛрдо 67.0.3396.99
- рд╕реЗрд▓реЗрдирд┐рдпрдо-рд╕рд░реНрд╡рд░-рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди-3.14.0 (ubuntu рдкрд░ рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рд▓реЗрдЦ)
рд╡рд┐рд╕реНрддреГрдд рдХрд░реЗрдВ рдХреЛрдб рдЕрдкрд╡рд╛рдж
рд╕рдВрд╣рд┐рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВ:
рд╣рдо рдЙрд╕ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд╣рд╛рдБ рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗ, рдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ рдФрд░ рдЙрд╕рдореЗрдВ рдЬрд╛рдПрдБ:
mkdir ProjectTutorial cd ProjectTutorial
рдХреЛрдб рдврд╛рдБрдЪрд╛ рдФрд░ рдЙрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
composer require codeception/codeception --dev

рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрдВрдкреЛрдЬрд╝рд░.рдЬреЙрди рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрдирд╛ рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
{ "require": { "php": ">=5.6.0 <8.0", "facebook/webdriver": ">=1.1.3 <2.0", "behat/gherkin": "^4.4.0", "codeception/phpunit-wrapper": "^6.0.9|^7.0.6" }, "require-dev": { "codeception/codeception": "^2.5", "codeception/base": "^2.5" } }
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ:
php vendor/bin/codecept bootstrap

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рддреАрди рд╕реЗрдЯ рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреЛрдбреЗрдкреНрд╢рди рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡реАрдХреГрддрд┐, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рдЗрдХрд╛рдИ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрди рд╕реЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреЛрдбрд╕реЗрдкреНрд╢рди рддреАрди yml рдлрд╛рдЗрд▓реЗрдВ рднреА рдмрдирд╛рддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╣рдо рд╕рднреА рдЖрд╡рд╢реНрдпрдХ
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдпрд╣ рдкрд╛рда рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ Acceptance.suite.yml рдореЗрдВ рджреЗ рджреВрдВрдЧрд╛ред
PHP рддреВрдлрд╛рди (рдпрд╛ рдПрдХ рдЕрдиреНрдп рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг) рдореЗрдВ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЛрд▓реЗрдВ рдФрд░
Acceptance.suite.yml рдкрд░ рдЬрд╛рдПрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдкрд░реАрдХреНрд╖рдг / рд╕реНрд╡реАрдХреГрддрд┐ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ редsuite.yml рдлрд╝реЛрд▓реНрдбрд░)ред
рд╣рдо рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрд╢рд╛ рд╕реНрд╡рд░реВрдкрдг рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВред рдореЙрдбреНрдпреВрд▓ рдПрдХ "-" рд╕рдВрдХреЗрдд рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд╛рди рд╕реНрддрд░ рдкрд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЫрд┐рдбрд╝рдХреЗрдВрдЧреАред
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ:
actor: AcceptanceTester modules: enabled: - WebDriver: url: 'http://yandex.ru/' // , browser: 'chrome' - \Helper\Acceptance // gherkin: contexts: default: - AcceptanceTester
рдФрд░ рдХреБрдЫ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп:
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ (рдореЗрд░реЗ рдкрд╛рд╕ рд▓рд┐рдм рд╣реИ)ред
рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ run.sh рдмрдирд╛рдПрдБ, рдЬреЛ рд╕реЗрд▓реЗрдирд┐рдпрдо рдФрд░ рдХреНрд░реЛрдо рдбреНрд░рд╛рдЗрд╡рд░ рдЪрд▓рд╛рдПрдЧрд╛ред
рд╣рдо рдпрд╣рд╛рдВ рд╕реЗрд▓реЗрдирд┐рдпрдо рдФрд░ рдХреНрд░реЛрдо рдбреНрд░рд╛рдЗрд╡рд░ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рд░рди рдХрдорд╛рдВрдб рдХреЛ рд░рди.рд╢ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
java -jar -Dwebdriver.chrome.driver=chromedriver_241 selenium-server-standalone-3.14.0.jar
рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рд╣рдо рдХрдВрд╕реЛрд▓ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ рдФрд░ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ:
chmod +x ./run.sh
(рдиреЛрдЯред рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЭреВрда рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рдирд╛рдо, рд╕реНрдЯрд╛рд░реНрдЯ рдХрдорд╛рдВрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рдЕрд╡рд╢реНрдп рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)редрдЖрдк рд╕реЗрд▓реЗрдирд┐рдпрдо рдФрд░ рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдЕрднреА рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЗрд╕ рдкрд░ рд╡рд╛рдкрд╕ рди рдЖрдПрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдпрд╛ рдЯрд░реНрдорд┐рдирд▓ рдЯреИрдм рдЦреЛрд▓реЗрдВ, рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ рдЬрд╣рд╛рдВ run.sh рдлрд╝рд╛рдЗрд▓ рдирд┐рд╣рд┐рдд рд╣реИ рдФрд░ рд▓реЙрдиреНрдЪ рдХрдорд╛рдВрдб рд▓рд┐рдЦреЗрдВ:
~/AutomationProjects/ProjectTutorial/lib$ ./run.sh
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ:

рд╣рдо рдЗрд╕реЗ рдЪрд╛рд▓реВ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рдкрд░ рддреИрдпрд╛рд░реА рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИред
рдЯреЗрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛
рд╣рдо рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрдорд╛рдВрдб рдХреЛрдбреЗрдкреНрд╢рди рдореЗрдВ рджреА рдЧрдИ рд╣реИ, рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЪрд▓рд╛рдПрдВ:
cept g:feature acceptance check
(рдиреЛрдЯ "рдЬрд╛рдВрдЪ" - рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдирд╛рдо)рд╣рдо рд╕реНрд╡реАрдХреГрддрд┐ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирдИ check.feature рдлрд╝рд╛рдЗрд▓ рджреЗрдЦрддреЗ рд╣реИрдВред

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

рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреМрди рд╕реЗ рдЪрд░рдг рд╣реИрдВ, рд╣рдо рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ:
cept dry-run acceptance check.feature

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

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рднреА рдирд╛рдо рдЬреЛ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рдереЗ, рдЙрдиреНрд╣реЗрдВ рдЪрд░ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: argред
рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ
AcceptanceTester.php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдкреГрд╖реНрда рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдЭреВрда рд╣реЛрдВрдЧреЗред

рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ, рдЙрдирдХреЗ рд╕рд╛рд░ (рд╡реИрдХрд▓реНрдкрд┐рдХ) рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред

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

рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рддрд░реАрдХреЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
public function step_beingOnMainPage($page) { $this->amOnPage('/'); } public function step_seeElement($element) { this->seeElement($element); } public function step_clickOnButton($button) { $this->click($button); } public function step_fillField($field, $text) { $this->fillField($field, $text); }
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХреНрдпрд╛ рд╣реБрдЖред рд╣рдо рдПрдХ рдЯреАрдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рджрд┐рдЦрд╛рдПрдЧреА рдХрд┐ рдХреМрди рд╕реЗ рддрд░реАрдХреЗ (рд╕реНрдЯреЗрдк) рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рд╛рдЧреВ рд╣реИрдВред
cept gherkin:steps acceptance

рд╕рдлрд▓рддрд╛!
рд▓реЗрдХрд┐рди рдлрд╝реАрдЪрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЪрд░рдг рдЕрднреА рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдиреЗ рдирд╣реАрдВ рдЧрдП рд╣реИрдВред

рд╕реНрдЯреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЪрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рд╣рдо рдПрдХ рдЯреНрд░рд┐рдХ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдиреЗрдорд╕реНрдкреЗрд╕ рдЧреЗрд░рдХрд┐рди рдХреЙрдирдЯреЗрдХреНрд╕реНрдЯ рд╕реЗ рдкреНрд░рд╕рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдеред
namespace Behat\Behat\Context { interface Context {} }
рд╣рдорд╛рд░реЗ рдПрдХреНрд╕реЗрдкреНрдЯреЗрдВрд╕рдЯреЗрд╕реНрдЯрд░ рд╡рд░реНрдЧ рдХреЛ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ рдФрд░ рд╕рдВрджрд░реНрдн рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрдВ
implements \Behat\Behat\Context\Context

рдЕрдм рдлрд╝реАрдЪрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рднреА рдЪрд░рдг рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдмрдВрдзреЗ рд╣реИрдВ:

рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХрд╣рд╛рдВ рджреЗрдЦрдирд╛ рд╣реИ, рдЖрдкрдХреЛ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рддрддреНрд╡ рдХреЗ рдирд╛рдо рдФрд░ рдкреЗрдЬ рдХреЗ рдкрддреЗ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рд▓реЛрдХреЗрдЯрд░ рдФрд░ рдпреВрдЖрд░рдПрд▓ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рддрд░реАрдХреЛрдВ рдореЗрдВ рдЖ рдЬрд╛рдПрдВрдЧреЗред
рдлрд┐рд░ рд╣рдореЗрдВ рдлреЙрд░реНрдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдорд┐рд▓рддрд╛ рд╣реИ:

рдФрд░ рдЖрдк рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
cept run acceptance

рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред
рд▓рдЧрднрдЧред рдпрджрд┐ рдкреГрд╖реНрда рддрддреНрд╡ рд▓реЛрдб рд╣реЛрдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╡рд┐рдзрд┐ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
$this->waitForElementVisible($element);
рд╣рдо рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рджреГрд╢реНрдп рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВред рд╣рдо рдкрд░реЗрд╢рд╛рди рд╣реИрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреА рдкреВрд░реА рдкрдардиреАрдпрддрд╛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдЦреЛ рдЧрдИ рд╣реИ рдХрд┐ рддрддреНрд╡реЛрдВ рдФрд░ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдирд╛рдореЛрдВ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдЪрдЯреАрдПрдордПрд▓ рддрддреНрд╡реЛрдВ рдФрд░ рдпреВрдЖрд░рдПрд▓ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред
рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкреГрд╖реНрда рдСрдмреНрдЬреЗрдХреНрдЯ рдкреИрдЯрд░реНрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдЬрд╛рдПрдВ
_Support рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рдкреГрд╖реНрда рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЗ рдкреГрд╖реНрда рдбрд╛рд▓реЗрдВрдЧреЗ:
php vendor/bin/codecept generate:pageobject MainPage
рдкрд╣рд▓рд╛ рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдпреИрдВрдбреЗрдХреНрд╕ рдХрд╛ рдореБрдЦреНрдп рдкреЗрдЬ рд╣реИ, рдЗрд╕реЗ рдореЗрдирдкреЗрдЬ рдХрд╣рддреЗ рд╣реИрдВ, рд╣рдо рдХреНрд▓рд╛рд╕ рдХреЛ рдЙрд╕реА рдХреЗ рдирд╛рдо рд╕реЗ рдмреБрд▓рд╛рдПрдВрдЧреЗ:

рдпрд╣рд╛рдБ рд╣рдо рд╕реНрдереИрддрд┐рдХ рдХреНрд╖реЗрддреНрд░ рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдП рдмрд┐рдирд╛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдЪреВрдВрдХрд┐ Acceptance.suite.yml рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рд╛рд░рдВрдн рдкреГрд╖реНрда url рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ:
yandex.ru , рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛
public static $URL = '/';
рдЗрд╕рдХреЗ рдмрд╛рдж рдкреГрд╖реНрда рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдЖрддреА рд╣реИред рд╣рдо рдХрдИ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЛрдХреЗрдЯрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдо рджреЗрддреЗ рд╣реИрдВред
рдЕрдм рдЖрдкрдХреЛ getElement рдореЗрдердб рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдПрд░реЗ рд╕реЗ рдПрд▓рд┐рдореЗрдВрдЯ рдХреЗ рдирд╛рдо рд╕реЗ рд▓реЛрдХреЗрдЯрд░ рд▓реМрдЯрд╛рдПрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕:
<?php //location: tests/_support/Page/MainPage.php namespace Page; /** */ class MainPage { public static $URL = '/'; public static $elements = array( ' ' => "//*[@id='wd-wrapper-_afisha']", ' ' => "//*[@data-statlog='afisha.title.link']", ' ' => "//*[@class='weather__icon weather__icon_ovc']|//*[@class='weather__icon weather__icon_skc_d']", ); public static function getElement($name){ return self::$elements[$name]; } }
рдкреЗрдЬ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдЬреЛрдбрд╝реЗрдВ:
/ ** рдкреЛрд╕реНрдЯрд░ * /

/ ** рдкреЛрд╕реНрдЯрд░ - рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо * /

рд╣рдо
AcceptanceTester.php рд╡рд░реНрдЧ рдореЗрдВ рд▓реМрдЯрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рд╣рдордиреЗ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд▓рд┐рдЦреЗ рд╣реИрдВред
рдЖрдЗрдП рдЗрд╕реЗ рдкреЗрдЬрдСрдмреНрдЬреЗрдХреНрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рд╣рдо рдкреГрд╖реНрдареЛрдВ рдХреЛ рдирд╛рдореЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрдирдХреЗ рд╡рд░реНрдЧ рдирд╛рдореЛрдВ рдХреЛ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рджрд░реНрд╢рд╛рдПрдБрдЧреЗ:
private $pages = array( " " => "\Page\MainPage", "" => "\Page\AfishaPage", " - " => "\Page\AfishaResult" );
рдкреНрд░рддреНрдпреЗрдХ рдирдпрд╛ PageObject рдЗрд╕реА рдкреНрд░рдХрд╛рд░ рдЗрд╕ рд╕рд░рдгреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ currentPage рдлрд╝реАрд▓реНрдб рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд▓рд┐рдВрдХ рдХреЛ рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреЗ PageObject рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛:
private $currentPage;
рдЕрдм рд╣рдо рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдХрд░рдВрдЯрдкреЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкреЗрдЬрдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЖрд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
"рдЬрдм рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо" рдкреГрд╖реНрда рдкрд░ рдкрд╣реБрдБрдЪ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХрджрдо рдЙрдард╛рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИред рддрдм рдЬрд╛рдВрдЪ рдХреЗ рдмрд┐рдирд╛ PageObject рд╡рд░реНрдЧ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
/** * @When :page */ public function step_beingOn($page) { // pageObject $this->currentPage = $this->pages[$page]; }
рдЕрдм рд╣рдо getPageElement рд╡рд┐рдзрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рд╕реЗ рддрддреНрд╡, рдпрд╛ рдЗрд╕рдХреЗ рд▓реЛрдХреЗрдЯрд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛:
private function getPageElement($elementName) { // $curPage = $this->currentPage; return $curPage::getElement($elementName); }

рдкрд╣рд▓реЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╣рдо рдкреЗрдЬрдСрдмрдЬреЗрдХреНрдЯ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдореЗрдВ рдлрд╝реАрдЪрд░ рдЯреЗрдХреНрд╕реНрдЯ рд╕реЗ рд╕реАрдзреЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
$arg
рд░реВрдк рд▓реЗ рд▓реЗрдЧрд╛
getPageElement($arg))
рдлрд┐рд░ рд╣рдорд╛рд░реА рд╡рд┐рдзрд┐рдпрд╛рдБ рдлрд╛рд░реНрдо рд▓реЗрдВрдЧреА:
/** * @When :page */ public function step_beingOnMainPage($page) { // pageObject $this->currentPage = $this->pages[$page]; $curPage = $this->currentPage; $this->amOnPage($curPage::$URL); } /** * @Then :element */ public function step_seeElement($element) { $this->waitForElementVisible($this->getPageElement($element)); $this->seeElement($this->getPageElement($element)); } /** * @Then :button */ public function step_clickOnButton($button) { $this->click($this->getPageElement($button)); } /** * @Then :field :text */ public function step_fillField($field, $text) { $this->fillField($this->getPageElement($field), $text); } /** * @Then :field */ public function step_deleteText($field) { $this->clearField($this->getPageElement($field)); }
Enter рджрдмрд╛рдХрд░ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:
public function step_keyboardButton() { $this->pressKey('//input',WebDriverKeys::ENTER); }
рдЕрдВрддрд┐рдо рдЪрд░рдг рддрдм рд╣реИ рдЬрдм рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЛрдВ рдФрд░ рдкреЗрдЬрдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирдП рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддреЗ рд╕рдордп PageObject рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЪрд░рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ "* рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрда рдкрд░ рдЧрдпрд╛: рдкреГрд╖реНрда" рд╣реИред
рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреБрдЫ рдФрд░ рдХрджрдо рдЬреЛрдбрд╝реВрдВрдЧрд╛ред рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рд╣реИ:
#language: ru : : . . . " " " " " " " " "" " " " " ENTER " - " " " " " " " "" ENTER
рдРрд╕рд╛ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рджреГрд╢реНрдп рдХрд┐рд╕реА рднреА рдмрд╛рд╣рд░реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдкрдардиреАрдп рд╣реИред
рднрд╛рдЧреЛ!
рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд░рди рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
cept run acceptance --debug
рд╣рдо рдкрд░рд┐рдгрд╛рдо рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рд╕рднреА рдкреГрд╖реНрда рддрддреНрд╡реЛрдВ рдХреЛ рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕реНрд╡рдпрдВ
https://github.com/Remneva/ProjectTutorial рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдПрдХ рд╢реБрд░реБрдЖрдд рд╕реНрд╡рдЪрд╛рд▓рди рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░, рд╢рд╛рдпрдж, рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рдХреИрд╕реЗ рдмрджрд▓рдирд╛ рдФрд░ рд╕рд░рд▓ рдХрд░рдирд╛ рд╣реИред