рдХреНрд▓рд╛рдЙрдб рдореЛрдмрд╛рдЗрд▓ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо

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



рд╣рдорд╛рд░реЗ рд▓рдХреНрд╖реНрдп рдФрд░ рдЙрджреНрджреЗрд╢реНрдп


(рдкрд╛рдардХ рдХреЛ рдЬрд▓реНрджреА рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдЕрдЧрд▓реЗ рднрд╛рдЧ рдХреЛ рд╣рд╡рд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ)


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


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


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реА DevOps рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ iOS рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рдореБрд▓реЗрдЯрд░ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реИ, рдпрд╣ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдФрд░ рдорд╣рдВрдЧрд╛ рдХрд╛рдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдорд╛рди рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, HAXVM рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ x86 рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдПрдХ iOS рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдПрдХ MacOS рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде xcode рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рд╡рд╛рд▓ рдПрдореБрд▓реЗрдЯрд░ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмреАрдЪ рдХреА рдЦрд╛рдИ рдХреЗ рд╕рд╛рде рд░рд╣рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рд░ рджреВрд╕рд░реА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╣рдо рд╕реИрдорд╕рдВрдЧ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЕрдЬреАрдм рдмрдЧ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдирд╣реАрдВ рдЦреЗрд▓реЗ рдЬрд╛ рд╕рдХрддреЗред рдЦреИрд░, рдФрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрджреНрд╡рд┐рддреАрдп рдФрд░ рдмрдЧ рдХреЗ рд╕рд╛рде рджреБрд░реНрд▓рдн рд╡рд┐рджреЗрд╢реА "рдЪреАрдиреА" "рдЦреБрд╢" рд╣реИ рдХрд┐ рдореИрдВ рднреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕реНрддрд░ рдкрд░ рдкрдХрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред


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



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


  • рдПрдкреАрдЖрдИ рдкрд░реАрдХреНрд╖рдг (рд╕реЗрд▓реЗрдирд┐рдпрдо / Appium)
  • IOS, Android рдбрд┐рд╡рд╛рдЗрд╕
  • рдореЛрдмрд╛рдЗрд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ
  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
  • рд╕рдВрджрд░реНрдн рдбрд┐рд╡рд╛рдЗрд╕ (GooglePixel (Android 9) рдФрд░ iPhone X (iOS 12+))
  • рдореИрдиреБрдЕрд▓ рдбрд┐рдмрдЧрд┐рдВрдЧ
  • рд▓реЙрдЧрд┐рдВрдЧ (рдкреНрд▓рд╕ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ, рд╡реАрдбрд┐рдпреЛ рд░рди рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛)
  • рдбрд┐рд╡рд╛рдЗрд╕ рдкрд╛рд░реНрдХ рдФрд░ рдЙрдкрд▓рдмреНрдзрддрд╛
  • рдФрд╕рдд рдкрд░реАрдХреНрд╖рдг рд▓реАрдб рд╕рдордп
  • рдХреАрдордд

рд╡рд╛рдВрдЫрдиреАрдп, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ:


  • рд╕реЗрд╡рд╛ рд╕реНрддрд░ рдЕрдЬрдЧрд░ рд╕рдорд░реНрдерди (рдЬреЛ рднреА рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ)
  • рдбреЗрд╕реНрдХрдЯреЙрдк рдбрд┐рд╡рд╛рдЗрд╕ \ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди

рдмрд╛рдЬрд╛рд░ рдЕрдиреБрд╕рдВрдзрд╛рди рдХреЗ рдкрд░рд┐рдгрд╛рдо


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


Habr├й рдкрд░ рдореИрдВрдиреЗ 2017 рдХреЛ рдЙрд╕реА рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдПрдХ рд▓реЗрдЦ рдкрд╛рдпрд╛, рд▓реЗрдХрд┐рди рддрдм рд╕реЗ рдирдИ рд╕реЗрд╡рд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреА рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдереЛрдбрд╝рд╛ рдХрдард┐рди рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реИрдорд╕рдВрдЧ рд░рд┐рдореЛрдЯ рдЯреЗрд╕реНрдЯ рд▓реИрдм, рдлрд╛рдпрд░рдмреЗрд╕ рдЯреЗрд╕реНрдЯ рд▓реИрдм, рдЬрд╝рд╛рдорд░реАрди рдЯреЗрд╕реНрдЯ рдХреНрд▓рд╛рдЙрдб, рдЕрдлрд╕реЛрд╕ рдЬреИрд╕реА "рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ" рд╕реЗрд╡рд╛рдПрдВ рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддреА рд╣реИрдВред


рдЦреЗрд▓ рд╕реЗ рдмрд╛рд╣рд░


рд╕реИрдорд╕рдВрдЧ рд░рд┐рдореЛрдЯ рдЯреЗрд╕реНрдЯ рд▓реИрдм



рд▓рд┐рдВрдХ ред


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


рдлрд╛рдпрд░рдмреЗрд╕ рдЯреЗрд╕реНрдЯ рд▓реИрдм



рд▓рд┐рдВрдХ ред


Google рдХреА рдПрдХ рд╕реЗрд╡рд╛ рдЖрдкрдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдореБрдлреНрдд рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ (рдХрд╛рдлреА рдирд╣реАрдВ)ред рд▓реЗрдХрд┐рди рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реИ - рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рд╕реНрд╡рдЪрд╛рд▓рди рдЙрдкрдХрд░рдг (UIAtomator2 рдФрд░ Android рдХреЗ рд▓рд┐рдП рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдФрд░ iOS рдХреЗ рд▓рд┐рдП XCTest) рдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдордХрдбрд╝рд┐рдпреЛрдВ (рдХреНрд░реЙрд▓рд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд░реЛрдмреЛ рдЯреЗрд╕реНрдЯ рдФрд░ рдЧреЗрдо рд▓реВрдЬ рдЯреЗрд╕реНрдЯред рдпрд╣реА рд╣реИ, рдпреВрдЖрдИрдпреВрдЯреЛрдореЗрдЯрд░ рдФрд░ рд╕реЗрд▓реЗрдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдореБрдлреНрдд рдореЗрдВ - рдореБрдлреНрдд рдкреИрдХреЗрдЬ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ 10 рдкрд░реАрдХреНрд╖рдгреЛрдВ рдФрд░ рдкреНрд░рддрд┐ рджрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдкрд╛рдВрдЪ рддрдХ рд╕реАрдорд┐рдд рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреНрд░рдорд╢рдГ $ 1 рдФрд░ $ 5 рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдордиреЗ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХрдИ рд╕реМ рдЯреЗрд╕реНрдЯреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ - рдпрд╣ рдХреЗрд╡рд▓ рдорд╣рдВрдЧрд╛ рд╣реИред рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдХреЗ рдмреАрдЪ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЕрдВрддрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рд╕рдорд░реНрдерди рдХреЛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдХрд░реЗрдЧрд╛ред


рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдРрдк рд╕реЗрдВрдЯрд░



рд▓рд┐рдВрдХ ред


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


рд╕реЗ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдПрдВ


рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╛рд░реНрдо



рд▓рд┐рдВрдХ ред


рд╢рд╛рдпрдж рдЖрдЬ (2500 рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ) рдЖрднрд╛рд╕реА рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЦреЗрддред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛ рдереА, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛рдПрдВ рдЕрднреА AWS рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рддреИрдирд╛рдд рд╣реИрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдХреАрдорддреЗрдВ рдкреНрд░рддрд┐ рдорд┐рдирдЯ 17 рд╕реЗрдВрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВред AWS рдЖрдкрдХреЛ рджреЗрд╢реА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде-рд╕рд╛рде Appium, Calabash, рдФрд░ рдЕрдиреНрдп рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реЗрд╡рд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдЦреИрд░, 1000 рдорд┐рдирдЯ "рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛" рдмрд╣реБрдд рд▓реБрднрд╛рд╡рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╢реИрддрд╛рди рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, AWS рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред


рд╣рдо, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, Python 3.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ AWS рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рд░реНрдо рдЕрднреА рднреА Python 2.7.6 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ( рдпрд╣рд╛рдВ рдореИрдиреБрдЕрд▓ рджреЗрдЦреЗрдВ)ред рдФрд░ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рд╡рд┐рд╖рд╛рдХреНрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрдИ рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдРрд╕рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╡рд┐рд╖рд╛рдХреНрдд рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░реАрдХреНрд╖рдг рдкреИрдХреЗрдЬ (рд╕рдВрдЧреНрд░рд╣) рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЬреАрдм рддрдВрддреНрд░ рднреА рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рд╣рдо рдореЛрдмрд╛рдЗрд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрджрдо рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ "рд╕реНрдЯрдм" рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкрд╛рдпрдерди 2.7 рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд╛рдпрдереЙрди 3.7 рдХреЗ рд╕рд╛рде рдПрдХ рд╡реЗрд╡ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕рдореЗрдВ рдЯреЙрдХреНрд╕рд┐рдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ ...



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



рдХреЛрдб рдЙрджрд╛рд╣рд░рдг
import boto3 #  AWS SDK https://pypi.org/project/boto3/ aws_client = boto3.client('devicefarm') response = aws_client.list_devices() #     device_arn = '' for phone in response["devices"]: if phone['name'] == "Google Pixel XL": #      (  ) device_arn = phone['arn'] #   Amazon Resource Name break project_arn = aws_client.list_projects()['projects'][0]['arn'] #        #      ,    SSH    response = aws_client.create_remote_access_session(projectArn=project_arn, deviceArn=device_arn, remoteDebugEnabled=True, ssh-public-key=SSH_KEY) #     adb devices     uuid Google Pixel XL  AWS Device Farm,   iOS #     ... RUN_TESTS() ... #    ( )    aws_client.stop-remote-access-session(arn=response['remoteAccessSession']['arn']) aws_client.delete_remote_access_session(arn=response['remoteAccessSession']['arn']) 

рдпрджрд┐ рд╣рдо рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ AWS SDK рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


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


рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реЗрд╡рд╛ рдкрд╕рдВрдж рдереА, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдЯреАрдо рдХреЗ рд▓рд┐рдП, рдЕрдлрд╕реЛрд╕, рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ "рдмрдЯ" рд╣реИрдВред


Bitbar



рд▓рд┐рдВрдХ ред


рдХреНрд▓рд╛рдЙрдб-рдЖрдзрд╛рд░рд┐рдд рдпрд╣ рдореЛрдмрд╛рдЗрд▓ рдлрд╝рд╛рд░реНрдо рд╕рд░реНрдЪ рдЗрдВрдЬрдиреЛрдВ рдкрд░ рдЧрд┐рд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рд╣реИред рдФрд░ рд╡реНрдпрд░реНрде рдирд╣реАрдВред рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдБ рдХрд┐ рдЗрд╕ рд╕реЗрд╡рд╛ рдореЗрдВ рдЙрдкрдХрд░рдгреЛрдВ (рдХреЗрд╡рд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ) рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рд╣реИред Bitbar рджреВрд░рд╕реНрде рдореИрдиреБрдЕрд▓ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг (Appium рдФрд░ рдЕрдиреНрдп рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк Firebase Test Lab (рд░реЛрдмреЛрдЯ рдЯреЗрд╕реНрдЯ) - AI TestBot рд╕реЗ рдХреНрд░реЙрд▓рд░ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред BitBar рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдкрд░реАрдХреНрд╖рдг рдереНрд░реЗрдбреНрд╕ рдХреА рдПрдХ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╡рд╢реНрдпрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкреВрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рд╕реИрдХрдбрд╝реЛрдВ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдпрджрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рд╡реНрдпрд╕реНрдд рд╣реИ, рддреЛ рдПрдХ рдФрд░ рдПрдХ рд╣реА рдЪреБрдирд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╛ рд╕рддреНрд░ рдкрдВрдХреНрддрд┐рдмрджреНрдз рд╣реЛрдЧрд╛ред рдкрд░реАрдХреНрд╖рдг рд░рди рдХреЗ рдЕрдВрдд рдореЗрдВ, рдПрдХ рд▓реЙрдЧ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдПрдХ рдкрд░реАрдХреНрд╖рдг рд░рд┐рдХреЙрд░реНрдб, рдкрд░рд┐рдгрд╛рдо рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдореЗрд▓ рдкрд░ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИред рдпрджреНрдпрдкрд┐ рд╡рд┐рднрд┐рдиреНрди CI / CD рдЯреВрд▓ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдЕрд╡рд╕рд░ рд╣реИрдВред рд╕реЗрд╡рд╛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдореЗрдВ рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдФрд░ рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдмрдирд╛рдПрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕, рдЖрдкрдХреЗ рдирд┐рдЬреА рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╣реИред рд╕рдЪ рд╣реИ, рдЖрдкрдХреЛ рдЗрди рд╕рднреА рдЪрд┐рдкреНрд╕ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдорд┐рдирдЯ рдХреА рд▓рд╛рдЧрдд $ 0.29 рд╣реЛрдЧреАред



рд╕реЗрдЯрдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд░рд▓ рд╣реИ, рдбрд╛рдорд░ рдХреЗ рд╕рд╛рде рджреЛ рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреА рдмрд╛рддрдЪреАрдд рдХреА рддрд░рд╣:


рдХреЛрдб рдЙрджрд╛рд╣рд░рдг
 from appium import webdriver """ ... """ com_executor = 'https://appium.bitbar.com/wd/hub' desired_capabilities = { 'deviceName': 'Motorola Google Nexus 6', 'deviceId': 'FA7AN1A00253', 'newCommandTimeout': 12000, 'browserName': 'Chrome', #     Chrome,    app 'bitbar_apiKey': 'BITBAR_API_KEY', 'bitbar_project': 'Software Testing', 'bitbar_testrun': 'Test run #N', 'bitbar_device': 'Motorola Google Nexus 6', 'bitbar_app': '23425235' } driver = webdriver.Remote(com_executor, desired_capabilities) """ ... """ 

Kobiton



рд▓рд┐рдВрдХ ред


рдПрдХ рдФрд░ рд╕реЗрд╡рд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рд╕реЗрд╡рд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдкрд╕рдВрдж рдмрд┐рдЯрдмрд╛рд░ (350+) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╛рдореВрд▓реА рд╣реИ, рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рднреА рдХрдо рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ BitBar рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИ, рдпрд╣ рдореИрдиреБрдЕрд▓ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг (рдРрдкрд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ - рдпрд╣рд╛рдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЪреБрдирдиреЗ рдХреЗ рдмрд┐рдирд╛) рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╕реЗрд╡рд╛ рдЖрдкрдХреЛ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рддреНрд░реЛрдВ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдпрд╣рд╛рдВ рдЙрдкрдХрд░рдг рдкреВрд▓ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗред рд╕реЗрд╡рд╛ рдХреА рдХреАрдордд рдмрд╣реБрдд рд╣реА рдЙрджрд╛рд░ рд╣реИ - $ 0.10 рдкреНрд░рддрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд┐рдирдЯ рд╕реЗ, рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рдЕрд╡рдзрд┐ рдХреЗ рджреМрд░рд╛рди рдореИрдВрдиреЗ рд╕реЗрд╡рд╛ рдХреА рдХреБрдЫ рдЕрд╕реНрдерд┐рд░рддрд╛ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ - рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рдЯрдХрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдЕрдХреНрд╕рд░ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЧрд┐рд░ рдЬрд╛рддрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рд╡реНрдпрд╕реНрдд рдпрд╛ рдЖрд░рдХреНрд╖рд┐рдд рд╣реИ, рддреЛ рдЖрдкрдХреЗ рд╕рднреА рд░рдирд┐рдВрдЧ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдпрд╣реА рд╣реИ, рдмрд┐рдЯрдмрд╛рд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕рддреНрд░реЛрдВ рд╕реЗ рдХреЛрдИ рдХрддрд╛рд░ рдирд╣реАрдВ рд╣реИред рд╕рдЪ рд╣реИ, рдпрд╣ рдХрдо рд▓рд╛рдЧрдд рдкрд░ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдмрд┐рдЯреЛрди рдХрд╛ рдЕрдкрдирд╛ рдЫреЛрдЯрд╛ рдПрдкреАрдЖрдИ рд╣реИред



рд╕реЗрдЯрдЕрдк рднреА рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдмрд┐рдЯрдмрд╛рд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд▓рдЧрднрдЧ рдореВрд▓ рдПрдкрд┐рдпрдоред


рдХреЛрдб рдЙрджрд╛рд╣рд░рдг
 import base64 from time import sleep from appium import webdriver import requests """ ... """ #  base64EncodedBasicAuth = base64.b64encode(bytes(f'{USERNAME}:{API_KEY}', 'utf-8')) headers = { 'Authorization': f'Basic {base64EncodedBasicAuth}' } reply = requests.get(f'https://api.kobiton.com/v1/apps', params={ }, headers = headers) #     deviceId headers = { 'Authorization': base64EncodedBasicAuth, 'Accept': 'application/json' } reply = requests.get(f'https://api.kobiton.com/v1/devices/{deviceId}/status', params={ }, headers = headers) #   ,      while (reply['isOnline'] == False or reply['isBooked'] == True): sleep(60) #   com_executor = f'https://{USERNAME}:{API_KEY}@api.kobiton.com/wd/hub' desired_capabilities = { 'browserName': 'Chrome', # The generated session will be visible to you only. 'sessionName': 'Automation test session', 'sessionDescription': '', 'deviceOrientation': 'portrait', 'captureScreenshots': True, 'deviceGroup': 'KOBITON', # For deviceName, platformVersion Kobiton supports wildcard # character *, with 3 formats: *text, text* and *text* # If there is no *, Kobiton will match the exact text provided 'deviceName': 'Pixel 2', 'platformName': 'Android', 'platformVersion': '9' } driver = webdriver.Remote(com_executor, desired_capabilities) """ ... """ #   RUN_TESTS() """ ... """ #       ,     (   ) headers = { 'Authorization': {base64EncodedBasicAuth} } requests.delete(f'https://api.kobiton.com/v1/sessions/{sessionId}/terminate', params={ }) """ ... """ 

BrowserStack



рд▓рд┐рдВрдХ ред


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



рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдХреЛрдб
 from appium import webdriver """ ... """ com_executor = 'https://USERNAME:API_KEY@hub-cloud.browserstack.com/wd/hub' desired_capabilities = {'device': 'Google Pixel', 'deviceName': 'Google Pixel', 'app': app_name, 'realMobile': 'true', 'os_version': '8.0', 'name': 'Bstack-[Python] Sample Test' } driver = webdriver.Remote(com_executor, desired_capabilities) """ ... """ 

рдореЛрдмрд╛рдЗрд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдХреЛрдб
 from selenium import webdriver """ ... """ com_executor = 'http://USERNAME:API_KEY@hub.browserstack.com:80/wd/hub' desired_capabilities = {'device': 'Google Pixel', 'deviceName': 'Google Pixel', 'browserName': 'Chrome', 'realMobile': 'true', 'os_version': '8.0', 'name': 'Bstack-[Python] Sample Test' } driver = webdriver.Remote(com_executor, desired_capabilities) """ ... """ 

Experitest



рд▓рд┐рдВрдХ ред


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



рдХреЛрдб рдЙрджрд╛рд╣рд░рдг
 from appium import webdriver """ ... """ com_executor = 'https://Uhttps://cloud.seetest.io/wd/hub' desired_capabilities = {"deviceName": "iPhone X", "accessKey": API_KEY, "platformName": "ios", "deviceQuery": "'@os='ios' and @version='12.1.3' and @category='PHONE'", } driver = webdriver.Remote(com_executor, desired_capabilities) """ ... """ 

SauceLabs



рд▓рд┐рдВрдХ ред


рд╕рдмрд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреНрд▓рд╛рдЙрдб рдкрд░реАрдХреНрд╖рдг рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХред рд▓рдЧрднрдЧ 400 рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕, рд╕реИрдорд╕рдВрдЧ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдПрдЯрд┐рдкрд┐рдХрд▓ рдЗрдореНрдпреВрд▓реЗрдЯрд░ рд╕рд╣рд┐рдд рд╕рд┐рдореБрд▓реЗрдЯрд░ рдФрд░ рдПрдореБрд▓реЗрдЯрд░ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЪрдпрди, рд▓рд┐рдирдХреНрд╕ рд╕рд╣рд┐рдд рд╡рд┐рднрд┐рдиреНрди рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИрдВред Appium / Selenium рдФрд░ рджреЗрд╢реА рдврд╛рдВрдЪреЗ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рдиред рд╕реЗрд╡рд╛ рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдкреБрд░рд╛рдиреЗ рдУрдПрд╕, рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ, рдЙрдкрдХрд░рдгреЛрдВ рд╕рд╣рд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╡реНрдпрд╛рдкрдХ рд╕рдВрдЧреНрд░рд╣ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИред рд╕реЙрд╕реЗрд▓реИрдмреНрд╕ рдореЗрдВ рдПрдХ рд╕рд╛рде рд╕рддреНрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕реАрдорд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рд╕рд╕реНрддреЗ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдПрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рджреЛ рдпреБрдЧрдкрдд рд╕рддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдХреНрдпрд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реИ: рдЕрд╕рд▓реА рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдЯреИрд░рд┐рдл рдкреНрд▓рд╛рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╕рд╕реНрддрд╛ рд╡рд┐рдХрд▓реНрдк, рдЬрд┐рд╕рдореЗрдВ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдкреНрд░рддрд┐ рдорд╛рд╣ 2000 рдорд┐рдирдЯ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рджреЛ рд╕рддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, $ 149 рдХрд╛ рдЦрд░реНрдЪ рдЖрдПрдЧрд╛, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 349 рдбреЙрд▓рд░ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ред CI / CD, Slack рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ SauceLabs рдХреЛ рд▓рд╛рдЗрд╡ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдлрд╕реЛрд╕, рдкрдВрдЬреАрдХрд░рдг рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рд╕рдВрднрд╡рддрдГ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдХрд╛рд░рдг, рд▓реЗрдХрд┐рди рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ред


Perfecto



рд▓рд┐рдВрдХ ред


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




рд╕рд╛рд░рд╛рдВрд╢ рдкрд░рд┐рдгрд╛рдо


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



рдирд┐рд╖реНрдХрд░реНрд╖


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


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


рд╡рд┐рдХрд▓реНрдк рдмреА : рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрджрд░реНрдн рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░реАрдХреНрд╖рдг рдорд╛рдзреНрдпрдорд┐рдХ (рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ) рд╣реИ - рдЖрдкрдХреА рдкрд╕рдВрдж рдмреНрд░рд╛рдЙрдЬрд╝рд░рд╕реНрдЯреИрдХ рд╣реИ ред рдпрд╣ рд╕рд┐рд░реНрдл рд╣рдорд╛рд░рд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ - рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ 90% рд╕рдВрджрд░реНрдн рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ (рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдмрдЧ рд╕рднреА рд╕рдВрджрд░реНрдн рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдЖрдо рд╣реИрдВ)ред рд╢реЗрд╖ 8% MS IE рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реИрдВ, IE рд╕рдорд░реНрдерди рдХреЗ рдЗрдирдХрд╛рд░ рдХреЗ рд╕рд╛рде - 2% MS Edge рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ 0.5% рддреНрд░реБрдЯрд┐рдпрд╛рдБред


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


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

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


All Articles