рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ рд╢реЛрдз рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдореБрдЭреЗ рдЙрд╕ рд╕рдордп рдХрд░рдирд╛ рдерд╛ рдЬрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЧреНрд░рд╛рд╣рдХ рд╣рд┐рд╕реНрд╕рд╛ рдлреНрд▓реЗрдХреНрд╕ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкрд╛рдпрдерди (Django) рдореЗрдВ рд╕рд░реНрд╡рд░ рднрд╛рдЧред
рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдХрд╛ рд╡рд┐рдХрд▓реНрдк
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ + рд╕реЗрд▓реЗрдирд┐рдпрдо + рдлреНрд▓реЗрдХреНрд╕рдореЛрдирд┐рдпрдо рдмрдВрдбрд▓ рдкрд░ рдмрд╕рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ рдЬрд┐рд╕ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдЧрдпрд╛ рдерд╛, рдЙрд╕ рдорд╛рд░реНрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдФрд░ рдпрд╣:
- рд╕реЗрд▓реЗрдирд┐рдпрдо + Sfapi
- Ranorex
- FlexMonkey
- рд╕реЗрд▓реЗрдирд┐рдпрдо + рдлреНрд▓реЗрдХреНрд╕рдореЛрдВрдХрд┐рдпрдо
рд╕реНрд╡рдЪрд╛рд▓рди рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рдЪреАрдЬ Sfapi (рд╕реЗрд▓реЗрдирд┐рдпрдо рдлреНрд▓реЗрдХреНрд╕-рдПрдкреАрдЖрдИ) рдереАред рдпрд╣ рд╕реЗрд▓реЗрдирд┐рдпрдо рдЖрд░рд╕реА рдФрд░ рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ (рдЬрд╛рд╡рд╛, рд╕реА #, рдкрд╛рдпрдерди, рд░реВрдмреА) рд╣реИрдВред рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдПрдХ рдирд┐рд╢реБрд▓реНрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХрдорд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ - рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВред рдпрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдЧрддрд┐рд╢реАрд▓ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЦрд░рд╛рдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреА рдЦреЛрдЬ рдХрд╛ рдХрд╛рд░рдг рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХреЛрдб рдерд╛ рдЬрд┐рд╕рдиреЗ рд╕рд░рд▓ рд╕рдВрдЪрд╛рд▓рди рдХрд┐рдпрд╛ред
рдЕрдЧрд▓рд╛ рдлреНрд▓реЗрдХреНрд╕ рдСрдЯреЛрдореЗрд╢рди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореИрдВрдиреЗ рдЖрдЬрдорд╛рдпрд╛ рдерд╛, Ranorex Studioред рдпрд╣ рдПрдХ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдЕрдВрддрд░рдлрд▓рдХ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреИрдХреЗрдЬ рд╣реИред рдкреНрд▓рд╕рд╕ рдореЗрдВ, рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдФрд░ рд╕реНрдкрд╛рдИ рдПрдЬреЗрдВрдЯ (рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЛ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рддреЗрдЬреА рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ (рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕реВрдЪреА рдЦрд░реАрджреА рдЧрдИ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ) ) рдФрд░ рд▓рдЧрднрдЧ рд╕рднреА рдлреНрд▓реЗрдХреНрд╕ рдпреВрдЖрдИ-рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рдмрд╛рддрдЪреАрдд (рдлреЙрд░реНрдо рдкрд░ рдореБрдЭреЗ рдбреЗрдЯрд╛рдЧреНрд░рд┐рдб рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдЧрд▓рдд рдХрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрддреЗрдВ рдорд┐рд▓реАрдВ, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдореБрдЭреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ )ред рдХрдорд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рдЙрдЪреНрдЪ рд▓рд╛рдЧрдд рд╣реИ, рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдбреЛрдореЗрди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░) рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╡реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХреЗрдВред рдпрд╣ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рдЙрдЪреНрдЪ рд▓рд╛рдЧрдд рдереА рдЬреЛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреА рдЦреЛрдЬ рдХреЗ рдХрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреА рдереАред
рд░реИрдиреЙрд░реЗрдХреНрд╕ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рдЕрдВрдд рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛, рдореИрдВрдиреЗ рдореБрдлреНрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рдЦреЛрдЬ рдЬрд╛рд░реА рд░рдЦреА рдФрд░ рдлреНрд▓реЗрдХреНрд╕рдореЛрдВрдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд▓рд╛рд╣ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордВрдЪ рдкрд░ рдЖрдпрд╛ред рдЙрдирдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд, рд▓реЗрдХрд┐рди рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ, рд╕рдХреНрд░рд┐рдп рдЪрд░реНрдЪрд╛ рдФрд░ рд▓рд╛рдЗрд╡ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдордВрдЪ рднреА рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрд╡рдпрдВ Adobe Air рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, FlexMonkey рдмрд╣реБрдд рддреЗрдЬ, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдореБрдлреНрдд рд╣реИред рдпрд╣ рд▓рдЧрднрдЧ рд╕рднреА UI рдШрдЯрдХреЛрдВ (рдХрдо рд╕реЗ рдХрдо рд╕рдм рдХреБрдЫ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдПрдХ рдЦрд╛рдореА рднреА рд╣реИ - рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓ рдореВрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдШрдЯрдХреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛, рдЗрди рдЧреБрдгреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛, рдЖрджрд┐ред рд▓реЗрдХрд┐рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЯреВрд▓ рдХреЗ рдмрд┐рдирд╛ рдореЗрд▓ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ FlexMonkey рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХрд╛ рдЕрдЧрд▓рд╛ рдЙрддреНрдкрд╛рдж рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ, рдЬреЛ рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ
рдлреНрд▓реЗрдХреНрд╕рдореЛрдВрдХрд┐рдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрд╛рдо рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛
рдЕрдкрдиреЗ рдлреНрд▓реЗрдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реЗрд▓реЗрдирд┐рдпрдо рдЖрд░рд╕реА + рдлреНрд▓реЗрдХреНрд╕рдореЛрдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЧреНрд░рд╣рдг рдЖрдИрдбреАрдИ рдХреЗ рд╕рд╛рде рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рдХреЛ рдЪреБрдирд╛)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ:
1. рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕реЗрд▓реЗрдирд┐рдпрдо рдЖрд░рд╕реА рдФрд░ рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреНрд▓рд╛рдЗрдВрдЯ рдбреНрд░рд╛рдЗрд╡рд░
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗ рдЬрд╛рдПрдВрдЧреЗ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд╛рд╡рд╛)ред
2.
FlexMonkium рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг 4.1.8 рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛)ред рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рддреАрди рдШрдЯрдХ рд╣реЛрддреЗ рд╣реИрдВ - .swc рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реЛрд▓реНрдбрд░, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдлреНрд▓реЗрдХреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, "рдпреВрдЬрд░-рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕.рдЬреЗрдПрд╕", рдЬреЛ рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдпрд╣ "рдлреНрд▓реЗрдХреНрд╕-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдВрдЯреНрд░реЛрд▓ рдХрдорд╛рдВрдб" "рд╕рдордЭ" рдЬрд╛рдПрдЧрд╛, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдФрд░ .xpi рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ рдЬреЛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реЗрд▓реЗрдирд┐рдпрдо рдЖрдИрдбреАрдИ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред
3. рдлреНрд▓реИрд╢ рдмрд┐рд▓реНрдбрд░ рдореЗрдВ рдлреНрд▓реЗрдХреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдВ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ рд╕реЗ .swc рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХрдИ рдРрд╕реА рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо рдФрд░ рд╕рдВрдЦреНрдпрд╛ рд╣реИред рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЕрд░реНрде рд╣реИ рдлреНрд▓реЗрдХреНрд╕-рдПрд╕рдбреАрдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЪреМрдерд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЖрдкрдХреЛ
рд╕реНрд╡рдЪрд╛рд▓рди_рдордирдХреА 4.x.swc
рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ )ред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рд╡реЙрдпрд▓рд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ - рдпрд╣ рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред
4. рдЕрдм рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдлреНрд▓реЗрдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдХреЛ "рд╕рдордЭрдиреЗ" рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП FlexMonkium рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдФрд░ рдЗрд╕реЗ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдХреНрд╕рдЯреЗрдВрд╢рди.js" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрддреАрд░реНрдгред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдмреИрдЯ-рдлрд╛рдЗрд▓ рдмрдирд╛рдИ:
java -jar C:\Automation\selenium-server-standalone-2.0rc2.jar -userExtensions C:\user-extensions.js
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдмреИрддрдирд┐рдХ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдЦрд┐рдбрд╝рдХреА рд╕реНрдХреНрд░реАрди рдкрд░ рд▓рдЯрдХрд╛рдПрдЧреА:

рддреЛ, рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдЖрд╡реЗрджрди рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рдФрд░ рд╕реЗрд▓реЗрдирд┐рдпрдо-рдЖрд░рд╕реА рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдлреНрд▓реЗрдХреНрд╕ рдШрдЯрдХ рдкреНрд░рдмрдВрдзрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИред
рдкрд╣рд▓рд╛ рдЯреЗрд╕реНрдЯ рдмрдирд╛рдПрдВ
рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ JUnit рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЧреНрд░рд╣рдг рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдХреЗ рд╕рд╛рде рдЬрд╛рд╡рд╛ рдХреЛ рдЪреБрдирд╛ред рдЗрд╕ рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рд╛рде, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдиреЗ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди JUnit рдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдХрдИ рдкрд░реАрдХреНрд╖рдг рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдереЗ, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯреЗрдЯ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдХреБрдЫ рдлрд╝реЛрд░рдо рдЦреЛрдЬреЛрдВ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкрдврд╝рд╛ рдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ JUnit рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ рд╣реИред рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ, рдореБрдЭреЗ рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдХрд┐ рдХреМрди рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реБрдП, рдпрд╣ рдХрд┐рд╕ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реБрдЖ, рдФрд░ рдРрд╕реА рдХрд┐рддрдиреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реБрдИрдВред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд╛ рдЬреЛ рдХрдВрд╕реЛрд▓ рдХреЛ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрдм рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдЬрд╛рд╡рд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдорд┐рд▓рд╛:
import java.awt.event.KeyEvent; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import com.thoughtworks.selenium.DefaultSelenium; import com.thoughtworks.selenium.HttpCommandProcessor; import com.thoughtworks.selenium.Selenium; public class TestRunner { private Selenium selenium; private HttpCommandProcessor proc; private int errorsFound; // DateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HH_ss"); Date date = new Date(); String msg_text = dateFormat.format(date); public static void main(String[] args) { TestRunner tr= new TestRunner(); tr.errorsFound = 0; try{ tr.seleniumStart(); //---- ---- tr.goMail(); tr.postSend(); tr.outBoxVerifyMessage(); }catch(Exception ex) {} } //Starting selenium server public void seleniumStart() throws InterruptedException { proc = new HttpCommandProcessor("localhost", 4444, "*firefox3 c:\\Program Files\\MozillaFirefox3.6\\firefox.exe", "http://q/"); selenium = new DefaultSelenium(proc); selenium.start(); Thread.sleep(5000); selenium.open("/site_media/"); } //Shutting down selenium server public void seleniumStop() { if (selenium != null) { selenium.stop(); selenium = null; } System.out.println("\r\nTesting compleated. Errors found: "+errorsFound); } //Error reporter public void printError(String test, String step) { errorsFound ++; System.out.println("\r\nError in Test: '"+test+"' on step: '"+step+"'"); } //Step runner public void testExec(String testName, String step, String cmd, String locator, int time) throws Exception { for (int t = 0;; t++) { if (t >= time) printError(testName, "Step "+step); try { if (proc.getBoolean(cmd, new String[] {locator})) break; } catch (Exception e) { } Thread.sleep(500); } } //----------------------------------------------------------------------------------- //////////////////////////////////////////////////////////////////////////////// //----------------------------------------------------------------------------------- // public void goMail() throws Exception { String test = "goMail"; //Step 1. testExec(test, "1", "isFlexMonkey", "", 60); //Step 2. "" testExec(test, "2", "isFlexMonkey", "<UIEvent command=\"Select\" value=\"tabBar\"><arg value=\"\"/> </UIEvent>", 60); } //----------------------------------------------------------------------------------- // public void postSend() throws Exception { String test = "postSend"; //Step 3. "" testExec(test, "3", "isFlexMonkey", "<UIEvent command=\"Select\" value=\"buttonBarMail\"><arg value=\"\"/></UIEvent>", 60); //Step 4. testExec(test, "4", "isFlexMonkey", "<UIEvent command=\"Open\" value=\"userDataProvider\"><arg value=\"null\"/></UIEvent>", 60); //Step 5. testExec(test, "5", "isFlexMonkey", "<UIEvent command=\"Select\" value=\"userDataProvider\"><arg value=\" \"/></UIEvent>", 60); //Step 6. "" testExec(test, "6", "isFlexMonkey", "<UIEvent command=\"SelectText\" value=\"subject\"><arg value=\"0\"/><arg value=\"0\"/></UIEvent>", 60); //Step 7. testExec(test, "7", "isFlexMonkey", "<UIEvent command=\"Input\" value=\"subject\"><arg value=\"Hello, "+msg_text+"\"/></UIEvent>", 60); //Step 8. ( ) testExec(test, "8", "isFlexMonkey", "<UIEvent command=\"ChangeFocus\" value=\"subject\"/>", 60); //Step 9. testExec(test, "9", "isFlexMonkey", "<UIEvent command=\"Input\" value=\"message\"><arg value=\"Test of text message " +msg_text+"\"/></UIEvent>", 60); //Step 10. testExec(test, "10", "isFlexMonkey", "<UIEvent command=\"Click\" value=\"\"/>", 60); } //----------------------------------------------------------------------------------------------- // public void outBoxVerifyMessage() throws Exception { String test = "outBoxVerifyMessage"; //Step 1. testExec(test, "1", "isFlexMonkey", "<UIEvent command=\"Select\" value=\"buttonBarMail\"><arg value=\"\"/></UIEvent>", 60); //Step 2. testExec(test, "2", "isFlexMonkey", "<VerifyProperty value=\"subject\" propertyString=\"text\" expectedValue=\"Hello, "+msg_text+"\"/>", 10); //Step 3. testExec(test, "3", "isFlexMonkey", "<VerifyProperty value=\"message\" propertyString=\"text\" expectedValue=\"Test of text message " +msg_text+"\"/>", 10); //Step 4. testExec(test, "4", "isFlexMonkey", "<VerifyProperty value=\"fullName\" propertyString=\"text\" expectedValue=\" \"/>", 10); } }
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЖрдВрддрд░рд┐рдХ рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдореЗрд▓ рднреЗрдЬрдиреЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдИрдореЗрд▓ рдХреЗ рдмреАрдЪ рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред
рдФрд░ рдЕрдм рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗред SeleniumStart рдФрд░ seleniumStop рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╛рд░рдВрдн рдФрд░ рдПрдХ рд╕рддреНрд░ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рд╕реЗрд▓реЗрдирд┐рдпрдо рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдХрдорд╛рдВрдб рднреЗрдЬрддрд╛ рд╣реИред рд╣реЛрд╕реНрдЯ рдФрд░ рдкреЛрд░реНрдЯ (рдЬрд┐рд╕ рдкрд░ рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ) рдЬреИрд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░, рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рдЬрд┐рд╕рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) рдФрд░ url (рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрд▓рдмреНрдз рд╣реИ) рдХреЛ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж PrintError рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдирд╛рдо рдФрд░ рдЪрд░рдг рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХрд┐рд╕реА рднреА рдЪрд░рдг рдореЗрдВ рдПрдХ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдХреЛрдб рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ "testExec" рдирд╛рдордХ рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЪрд░рдг рдХрд╛ рдирд╛рдо рдФрд░ рд╕рдВрдЦреНрдпрд╛ рд╣реИ (рдЬреЛ рдХрд┐ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рдмрд╛рдж "рдкреНрд░рд┐рдВрдЯрдЕрд░реНрд╕" рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ), рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб, рдкрде (рд▓реЛрдХреЗрдЯрд░) рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рд╣рдо "рдкрд╣реБрдВрдЪ", рдФрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрде рдХреЗ 2 рдкреНрд░рдХрд╛рд░ рд╣реИрдВ: "рд╡реЗрд░рд┐рдлрд╛рдИрдкреНрд░реЙрдкрд░реНрдЯреА" рдФрд░ "рдпреВрдЖрдИрдИрд╡реЗрдВрдЯ"ред рдкрд╣рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХреЗ рдЧреБрдг рдорд╛рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрддреНрд╡ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЖрдк рдЖрд╡реЗрджрди рдХреЗ рдпреВрдЖрдИ рддрддреНрд╡ рдХреЛ рди рдХреЗрд╡рд▓ рдЙрд╕рдХреЗ рдирд╛рдо рдпрд╛ рдЖрдИрдбреА рд╕реЗ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдХрдИ рдЧреБрдгреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ "arg" рдЯреИрдЧ рдореЗрдВ рджрд░реНрд╢рд╛рдП рдЧрдП рд╣реИрдВред рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рджрд╕реНрддрд╛рд╡реЗрдЬ
рдЧреЛрд░рд┐рд▓реНрд▓рд╛ рд▓реЙрдЬрд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред
рд▓реЛрдХреЗрдЯрд░реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдлреНрд▓реЗрдХреНрд╕рдореЛрдВрдХреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд░рдгреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рд▓рд┐рдЦрд╛, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдПрдХ рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдбрд╛рд▓рд╛ред рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ:
<FlexMonkey> <TestSuite name="NewTestSuite" description="" ignore="false"> <TestCase name="" description="null" ignore="false"> <Test name=" " description="null" defaultThinkTime="250" ignore="false"> <UIEvent command="Select" value="tabBar" prop="automationName" delay="1000" attempts="10"> <arg value=""/> </UIEvent> <Pause duration="10000"/> <UIEvent command="Select" value="buttonBarMail" prop="automationName" delay="1000" attempts="10"> <arg value=""/> </UIEvent> <Pause duration="1000"/> <UIEvent command="Open" value="userDataProvider" prop="automationName" delay="1000" attempts="10"> <arg value="null"/> </UIEvent> <UIEvent command="Select" value="userDataProvider" prop="automationName" delay="1000" attempts="10"> <arg value=" "/> </UIEvent> ...
рдпрд╛ рдЖрдк рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рд╕реАрдзреЗ рд╕реЗрд▓реЗрдирд┐рдпрдо рдЖрдИрдбреАрдИ рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ flexmonkium.xpi рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ 2 рд╡рд┐рдзрд┐рдпрд╛рдВ 100% рд╕рдЯреАрдХ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рджрд░реНрд╢рди рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддреА рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдШрдЯрдХреЛрдВ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдЖрдИрдбреА рд╣реЛрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИрдВред рдШрдЯрдХ рдЧреБрдг FlexMonkey рдпрд╛ FlexMonkium рдХрдВрд╕реЛрд▓ рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

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