рд╣рд╛рд▓ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг, рдкреНрд░рддрд┐рдЧрдорди рдкрд░реАрдХреНрд╖рдг, рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг, рдЯреАрдбреАрдбреА, рдмреАрдбреАрдбреА, рдЖрджрд┐ рдХрд╛ рд╡рд┐рд╖рдп рдЕрдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд▓рдЧреЗ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдбреЗрд╕реНрдХрдЯреЙрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ
рдмрд╛рдЗрдХ рд▓реЗрдЦрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред рдиреЗрдЯред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдПрдХ рдЖрд░рдХреНрд╖рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ рдЬреЛ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдпреВрдЖрдИ рдХреА рдЬрд╛рдВрдЪ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреНрдпреВрдП рдЯреАрдо рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреМрд╢рд▓ рдирд╣реАрдВ рд╣реИрдВ, рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдмрд╣реБрдд рдХрдо рдорджрдж рдХрд░реЗрдЧрд╛ред рдореИрдВ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрд╕реЗ рдХреЛрдб рд▓реЗрдЦрди рдЪрдХреНрд░ рдореЗрдВ рдЯреАрдбреАрдбреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЕрдзрд┐рдорд╛рдирддрдГ рдмрд┐рд▓реНрдб рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди рдПрдХ рдЕрд▓рдЧ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рдмрд╛рдж) ред рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдзреАрдореА рдЧрддрд┐ рд╕реЗ рд╣реЛрдЧрд╛, рдпрд╣ рдЧреБрд╕реНрд╕рд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ рдФрд░ рдХреБрдЫ рд╕рдордп рдХреЗ рдмрд╛рдж рдбреЗрд╡рд▓рдкрд░ рдмрд╕ рдЙрдирдХреЗ рд▓реЙрдиреНрдЪ рдкрд░ рд╕реНрдХреЛрд░ рдХрд░реЗрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╕рд░рд▓ рд╣реЛрдЧрд╛ - рджреЛ рдмрдЯрди рдХреЗ рд╕рд╛рде рдПрдХ рдЖрд╡реЗрджрди рд╣реИред рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкрд╣рд▓реЗ рдкрд╛рда рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд╛рда рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ (рдЗрд╕реЗ "рд╣реИрдмреНрд░рд╛рд╣реНрд░рд╛" рд╣реЛрдиреЗ рджреЗрдВ)ред рджреВрд╕рд░реЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рд╡рд░реНрддрдорд╛рди рд╕рдордп рдФрд░ рджрд┐рдирд╛рдВрдХ рд╡рд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рддрджрдиреБрд╕рд╛рд░, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рддреАрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкрд╛рда рдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд╛рдаред
- рдкрд╣рд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд╛рдаред
- рджреВрд╕рд░реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд╛рдаред
рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди
1. .рдиреЗрдЯ рдпреВрдЖрдИ рдСрдЯреЛрдореЗрд╢рди
WPF рдХреЗ рд╡рд┐рдореЛрдЪрди рдХреЗ рд╕рд╛рде рд╣реА рдпрд╣ рдврд╛рдВрдЪрд╛ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╣реА рдкреНрд░рдХрдЯ рд╣реЛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдиреЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рдЙрдЪрд┐рдд рдХрд╡рд░реЗрдЬ рдирд╣реАрдВ рдкрд╛рдпрд╛ред
UI рдСрдЯреЛрдореЗрд╢рди рдПрдХ рдордирдорд╛рдирд╛ Win32, рд╡рд┐рдВрдбреЛрдЬ рдлреЙрд░реНрдо рдпрд╛ WPF рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдкреЗрдбрд╝ рдХрд╛ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рддрдХ рдмрд╛рдж рдХреА рдкрд╣реБрдВрдЪ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЗрдирдкреБрдЯ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕рдорд░реНрдерди рд╣реИред рдпрджрд┐ рдкрд╛рдардХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ Microsoft рд╕рдХреНрд░рд┐рдп рдПрдХреНрд╕реЗрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рдерд╛, рддреЛ рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐
UI рдСрдЯреЛрдореЗрд╢рди рд▓рдЧрднрдЧ рдЗрд╕рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рдВрд╢рдЬ рд╣реИред
рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдкреНрд░рдХрд╛рд░
рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ, рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдмрд╛рд▓ рддрддреНрд╡реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рдЦрд┐рдбрд╝рдХреА рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкрд╣рд▓реЗ
рдСрдЯреЛрдореЗрд╢рдирдлреНрд▓рд┐рдореЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ
рдЖрдЯреЛрдореЗрд╢рди рдИрд▓рд░рдлреЛрдо.рд╣реИрдВрдбрд▓ рдореЗрдердбреНрд╕
(рдкреНрд░реЛрд╕реЗрд╕.рдореИрдирд╡рд┐рдВрдбреЛрд╣реИрдВрдбрд▓) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдпрд╛ рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╡реЗрджрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд▓рд┐рдВрдХ рд╣реИред
AutomationElement.RootElement.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, " " ));
* This source code was highlighted with Source Code Highlighter .
рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП,
рдпреВрдЖрдИ рдСрдЯреЛрдореЗрд╢рди рдСрдЯреЛрдореЗрд╢рдирдкреИрдЯрд░реНрди рдирд╛рдордХ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реИрдкрд░реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
рд╡рд┐рд╕реНрддрд╛рд░рдХреЙрд▓рдкреНрд▓рд╛рдЯрдкреНрдирд╛рдЯрд░реНрди ,
рд╕рд┐рд▓реЗрдХреНрдЯреЗрдордкреИрдЯрд░реНрди , рдЖрджрд┐, рдЬреЛ рдЗрди рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╕реНрддрд╛рд░рдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ / рдкрддрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
рдЧреМрд░рд╡
- рдирд┐: рд╢реБрд▓реНрдХред
- Microsoft рд╕реЗ рд╕рдорд░реНрдердиред
- рдпрд╣ .net рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
- Win32, Windows рдкреНрд░рдкрддреНрд░ рдФрд░ WPF рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
рдХрдорд┐рдпреЛрдВ
- рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдпрд╛ рд╡рд┐рдВрдбреЛ рд╢реАрд░реНрд╖рдХ рд╕реЗ рдЯрд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЦрд░рд╛рдм рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрде рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╢реАрд░реНрд╖рдХ рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
- рдЙрдкрд▓рдмреНрдз рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реАрдорд┐рдд рд╕реЗрдЯ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рдЙрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ Microsoft рдиреЗ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬ рдХрд┐рдпрд╛ рд╣реИред рдХреЛрдИ рднреА рдЕрдиреБрдХреВрд▓рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдЯрд┐рд▓ рдпреМрдЧрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ) рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░реЗрдЧрд╛ред
- рдпрд╣ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдХрдореА рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдЪрд╛рдирдХ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдпрд╛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХрд╛рдиреЛрдВ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдиреГрддреНрдп рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред "рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЙрд╕реА рд░реВрдк рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред" - рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЬрдм рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдкрд░ рдлрд╝рд╛рдЗрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░), рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреЛрдИ рд╕реНрдореГрддрд┐ рдЪреЗрд╣рд░реЗ рдирд╣реАрдВ рд╣реИрдВ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╡рд░реНрддрдорд╛рди рддрд┐рдерд┐ рдХреЗ рдЙрддреНрдкрд╛рджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ, рддреЛ рдпрд╣ "рдЖрдВрддрд░рд┐рдХ" рд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдмрд┐рдирд╛ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджреЗрдЧрд╛ред рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ, рд▓рдВрдмрд╛ рдФрд░ рдХрднреА-рдХрднреА рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкрд╛рда рдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд╛рда
- [TestMethod]
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдЯреЗрд╕реНрдЯрд╕реНрдЯрд╛рд░реНрдЯрдЕрдк ()
- {
- var appPath = Path.Combine (Path.GetDirectoryName ( рд╡рд┐рдзрд╛рдирд╕рднрд╛ .GetExecutingAssembly) (рд╕реНрдерд╛рди), @ ".. \ _ \ _ \ _ \ TestUI \ bin \ Debug \ TestUI.exe" ;
- var process = Process.Start (appPath);
- рдХреЛрд╢рд┐рд╢
- {
- рдзрд╛рдЧрд╛ред рд╕реЛ (5000);
- var mainWindow = рд╕реНрд╡рдЪрд╛рд▓рдиElement.FromHandle (process.MainWindowHandle);
- var buttonControl = mainWindow.FindFirst (TreeScope.Children, New PropertyCondition (рдСрдЯреЛрдореЗрд╢рди рдЗрд▓рд┐рдореЗрдВрдЯреЗрд╢рди.рдХрдВрдЯреНрд░реЛрд▓ рдЯрд╛рдЗрдкреЛрдкреНрд░реЙрдкрд░, ControlType.Button));
- var textBoxControl = mainWindow.FindFirst (TreeScope.Children, New PropertyCondition (рдСрдЯреЛрдореЗрд╢рди рдЗрд▓рд┐рдореЗрдВрдЯреЗрд╢рди.рдХрдВрдЯреНрд░реЛрд▓ рдЯрд╛рдЗрдкреЛрдкреНрд░реЛрдЯреА, ControlType.Edit));
- var textBox = (ValuePattern) textBoxControl.GetCurrentPattern (ValuePattern.Pattern);
- Assert.AreEqual ( "123123123" , textBox.Current.Value);
- }
- рдЕрдВрдд рдореЗрдВ
- {
- process.Kill ();
- }
- }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдкрд╣рд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд╛рдаред
- [TestMethod]
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдЯреЗрд╕реНрдЯрдореЗрдереЛрдб рдпреВрдЖрдИрдЯреВрдЯреЛрдореЗрд╢рди ()
- {
- var appPath = Path.Combine (Path.GetDirectoryName ( рд╡рд┐рдзрд╛рдирд╕рднрд╛ .GetExecutingAssembly) (рд╕реНрдерд╛рди), @ ".. \ _ \ _ \ _ \ TestUI \ bin \ Debug \ TestUI.exe" ;
- var process = Process.Start (appPath);
- рдХреЛрд╢рд┐рд╢
- {
- рдзрд╛рдЧрд╛ред рд╕реЛ (5000);
- var mainWindow = рд╕реНрд╡рдЪрд╛рд▓рдиElement.FromHandle (process.MainWindowHandle);
- var buttonControl = mainWindow.FindFirst (TreeScope.Children, New PropertyCondition (рдСрдЯреЛрдореЗрд╢рди рдЗрд▓рд┐рдореЗрдВрдЯреЗрд╢рди.рдХрдВрдЯреНрд░реЛрд▓ рдЯрд╛рдЗрдкреЛрдкреНрд░реЙрдкрд░, ControlType.Button));
- var textBoxControl = mainWindow.FindFirst (TreeScope.Children, New PropertyCondition (рдСрдЯреЛрдореЗрд╢рди рдЗрд▓рд┐рдореЗрдВрдЯреЗрд╢рди.рдХрдВрдЯреНрд░реЛрд▓ рдЯрд╛рдЗрдкреЛрдкреНрд░реЛрдЯреА, ControlType.Edit));
- var textBox = (ValuePattern) textBoxControl.GetCurrentPattern (ValuePattern.Pattern);
- Assert.AreEqual ( "123123123" , textBox.Current.Value);
- var рдмрдЯрди = (InvokePattern) рдмрдЯрдиControl.GetCurrentPattern (InvokePattern.Pattern);
- рдмрдЯрдиред рдЗрдВрд╡реЛрдХ ();
- Assert.AreEqual ( " рд╣рдмреНрд░рд╣реНрд░рдм " , рдЯреЗрдХреНрд╕реНрдЯрдмреЙрдХреНрд╕ред рд╕рдорд╛рдВрддрд░ред рд╡рд╛рд▓реНрдпреВ);
- }
- рдЕрдВрдд рдореЗрдВ
- {
- process.Kill ();
- }
- }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рджреВрд╕рд░реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд╛рда рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕рдордп рд╣рдореЗрд╢рд╛ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдХреБрдЫ рднреА рд▓реЙрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
2. рд╕рдлреЗрдж рдкрд░рд┐рдпреЛрдЬрдирд╛
рдпреВрдЖрдИ рдСрдЯреЛрдореЗрд╢рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдлреНрд░реА рдХреЛрдбреЗрдХреНрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХред рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рд╕рдорд╛рди рд╣реИрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдирд┐рдпрдВрддреНрд░рдг рдкреЗрдбрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЙрдиреНрдирдд рдПрдкреАрдЖрдИ рдореЗрдВ рднрд┐рдиреНрди рд╣реИред
рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкрд╛рда рдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд╛рда
- [TestMethod]
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдЯреЗрд╕реНрдЯрд╕реНрдЯрд╛рд░реНрдЯрдЕрдк ()
- {
- var appPath = Path.Combine (Path.GetDirectoryName ( рд╡рд┐рдзрд╛рдирд╕рднрд╛ .GetExecutingAssembly) (рд╕реНрдерд╛рди), @ ".. \ _ \ _ \ _ \ TestUI \ bin \ Debug \ TestUI.exe" ;
- var рдЕрдиреБрдкреНрд░рдпреЛрдЧ = White.Core.Application.Launch (appPath);
- Assert.IsNotNull (рдЖрд╡реЗрджрди);
- var рд╡рд┐рдВрдбреЛ = application.GetWindow ( "MainWindow" );
- var textBox = window.Get <White.Core.UIItems.TextBox> ();
- Assert.IsNotNull (textBox);
- Assert.AreEqual ( "123123123" , textBox.Text);
- }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдкрд╣рд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЯреЗрдХреНрд╕реНрдЯ
- [TestMethod]
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп TestWithWhite ()
- {
- var appPath = Path.Combine (Path.GetDirectoryName ( рд╡рд┐рдзрд╛рдирд╕рднрд╛ .GetExecutingAssembly) (рд╕реНрдерд╛рди), @ ".. \ _ \ _ \ _ \ TestUI \ bin \ Debug \ TestUI.exe" ;
- var рдЕрдиреБрдкреНрд░рдпреЛрдЧ = White.Core.Application.Launch (appPath);
- Assert.IsNotNull (рдЖрд╡реЗрджрди);
- var рд╡рд┐рдВрдбреЛ = application.GetWindow ( "MainWindow" );
- var textBox = window.Get <White.Core.UIItems.TextBox> ();
- var рдмрдЯрди = window.Get <White.Core.UIItems.Button> (SearchCriteria.ByText ( "рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ" ));
- рдмрдЯрди.рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ();
- Assert.AreEqual ( " рд╣рдмреНрд░рд╣реНрд░рдм " , рдЯреЗрдХреНрд╕реНрдЯрдмреЙрдХреНрд╕ред рдЯреЗрдХреНрд╕реНрдЯ);
- }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
3. рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЛрдбреЗрдб рдпреВрдЖрдИ рдЯреЗрд╕реНрдЯ
рдХреЛрдбреЗрдб рдпреВрдЖрдИ - рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди, рдЬреЛ 2010 рдХреЗ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдмрд╛рд░-рдмрд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдпрд╣рд╛рдВ рдФрд░
рдпрд╣рд╛рдВ рд╣рдм рд╕рд╣рд┐рддред
рдЧреМрд░рд╡
- рдПрдХ рд░рд┐рдХреЙрд░реНрдбрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдСрдЯреЛ-рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреА рд╣реИред
- рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП "рдЖрдЙрдЯ рдСрдл рдж рдмреЙрдХреНрд╕" рдХреА рдЖрдкреВрд░реНрддрд┐ред
- Microsoft рд╕реЗ рд╕рдорд░реНрдерди, TFS рдореЗрдВ рдПрдХреАрдХрд░рдгред
- рд╕реНрдХреНрд░реАрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд┐рдирд╛, рдирд┐рдпрдВрддреНрд░рдг рдкреЗрдбрд╝ рдХреЗ рд╕реНрддрд░ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
рдХрдорд┐рдпреЛрдВ
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрдорд┐рдпреЛрдВ рдХрд╛ рд╕реЗрдЯ
UI рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИ ред рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдХреЗрд╡рд▓ рдпрд╣ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдХреЗрд╡рд▓ 2010 рдХреЗ рд╕реНрдЯреВрдбрд┐рдпреЛ (рдЕрд▓реНрдЯреАрдореЗрдЯ, рдкреНрд░реАрдорд┐рдпрдо, рдкреНрд░реЛрдлреЗрд╢рдирд▓) рдХреЗ рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рддреАрдиреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдЗрдЯрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд░рд┐рдХреЙрд░реНрдбрд░ рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдФрд░ рдкреНрд░реАрдорд┐рдпрдо рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕рдВрднрд╡ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдШрд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП
рдЯреЛрд░реЗрдВрдЯ рд╕реЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП, рдЬрд╣рд╛рдВ рджрд░реНрдЬрдиреЛрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХрджрдо рдЙрдЪреНрдЪ рдЕрдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдФрд░ рд▓реЗрдЦрд╛рдВрдХрди рдХреА рдУрд░ рд╕реЗ рдЧрд▓рддрдлрд╣рдореА рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВ рдЯреЗрд╕реНрдЯ рдХреЛрдб рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдпрд╣ рдСрдЯреЛ-рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рдХрд╛ рдирд╣реАрдВ рд╣реИред
4. рдЯреЗрд╕реНрдЯ рдХрдореНрдкреНрд▓реАрдЯ рдФрд░ рд▓рд╛рдЗрдХ
рдЯреЗрд╕реНрдЯ рдХрдореНрдкрд▓реАрдЯ рдЬреИрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рд╡рд┐рд╖рдп рд╣реИ, рдореИрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓реВрдВрдЧрд╛ред рдЙрдирдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреМрд╢рд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдгрд╛рд▓реА рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ, рднрдВрдбрд╛рд░рдг рдФрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХрдорд┐рдпрд╛рдВ рдкрд┐рдЫрд▓реЗ рдирд┐рд░реНрдгрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рджреЛрд╣рд░рд╛рдИ рдЬрд╛рддреА рд╣реИрдВ - рднреБрдЧрддрд╛рди, рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдПрдХ "рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕" рдХреЗ рд░реВрдк рдореЗрдВ рд░рд╡реИрдпрд╛, рдЧреАрд▓реЗ рдкреНрд▓рд╕
рдЯреЗрд╕реНрдЯ рдХрдореНрдкреНрд▓реАрдЯ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд┐рдирд╛, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд╛рдзрд╛рд░рдг mstest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред
рдЪрд▓реЛ рдХреБрдЫ рд╣рдорд╛рд░рд╛ рдЕрдкрдирд╛ рд╣реИ
рдпрджрд┐ рдЖрдк WPF рдореЗрдВ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ UI рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк
рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
VisualTreeHelper рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЛ рдЪрд▓рд╛рдПрдВ,
рд╡рд┐рдЬрд╝реБрдЕрд▓рдЯреНрд░реА рд╣реЗрд▓реНрдкрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдВ рдФрд░
рдореБрдЦрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдорд╛рди рдкрдврд╝реЗрдВред
рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкрд░реАрдХреНрд╖рдг рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЬреЛ рдирд┐рдпрдорд┐рдд рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ:
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ
var application = UI.Run(() => new App { MainWindow = new MainWindow() });
* This source code was highlighted with Source Code Highlighter .
рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рд╡рд╣ рдзрд╛рдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдмрдирд╛рдП рдЧрдП рдереЗ, рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдПрдХ рдлреЗрдВрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
var window = application.Get(x => x.MainWindow);
* This source code was highlighted with Source Code Highlighter .
рдЦреИрд░, рдкреЗрдбрд╝ рдореЗрдВ рдЦреЛрдЬреЗрдВ
var textBox = _mainWindow.FindChild((TextBox el) => el.Name == "SomeText" );
* This source code was highlighted with Source Code Highlighter .
рдлрд┐рд░ рднреА рдкреНрд░рдХрд╛рд╢, рд░рдВрдЧреЛрдВ рдФрд░ рдЕрдиреНрдп рд╕рдВрд░рдЪрдирд╛ рд╕рдВрдмрдВрдзреА рдЪреАрдЬреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдлрд┐рд░ рдЖрдк
RenderTargetBitmap рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдлреИрд╢рди рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдирд┐рдЬреА рд╢реВрдиреНрдп AssertRender ( рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдирд╛рдо, рдлреНрд░реЗрдорд╡рд░реНрдХ рддрддреНрд╡рдлреЙрд░рдЯреЗрд╕реНрдЯ)
- {
- var рдЫрд╡рд┐ = elementForTest.Render ();
- var expectPath = Path.Combine (AppDomain.CurrentDomain.BaseDirectory, expectImageName);
- рдЕрдЧрд░ (( рдлрд╝рд╛рдЗрд▓ .Exists (рдЙрдореНрдореАрджрдкрдард┐рдд) рдФрд░& рдлрд╝рд╛рдЗрд▓ .ReadAllBytes (рдЙрдореНрдореАрджрдкрдард┐рдд)) .рд╕реБрд╡рд┐рдзрд╛рдПрдБ (рдЫрд╡рд┐))
- {
- рдлрд╝рд╛рдЗрд▓ .WriteAllBytes (Path.Combine (AppDomain.CurrentDomain.BaseDirectory, "fail_" + expectImageName), рдЫрд╡рд┐);
- рдирдИ AssertFailedException ( string .ormat ( "рддрддреНрд╡ {0} рдЫрд╡рд┐ рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ '{1}'" , elementForTest.Get (x => x.Name), expectImageName);
- }
- }
- AssertRender ( "button.png" , рдмрдЯрди);
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЧреМрд░рд╡
- рдирд┐: рд╢реБрд▓реНрдХред
- рдЗрд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
- рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЧреАрд▓рд╛ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред
рдХрдорд┐рдпреЛрдВ
- рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд░рд┐рдХреЙрд░реНрдбрд░ рдирд╣реАрдВ рд╣реИред рд╣рдо рд╕рдм рдХреБрдЫ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
- рдЯреЗрд╕реНрдЯ рд╕рдкреЛрд░реНрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдкрдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рдкрдбрд╝рддрд╛ рд╣реИред
рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкрд╛рда рдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд╛рда
- [TestMethod]
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдЯреЗрд╕реНрдЯрд╕реНрдЯрд╛рд░реНрдЯрдЕрдк ()
- {
- var рдЕрдиреБрдкреНрд░рдпреЛрдЧ = UI.Run () (> = рдирдпрд╛ рдРрдк {MainWindow = new MainWindow ()});
- var mainWindow = application.Get (x => x.MainWindow);
- var textBox = mainWindow.FindChild ((TextBox el) => el.Name == "SomeTexBox" );
- Assert.IsNotNull (textBox);
- Assert.AreEqual ( "123123123" , textBox.Get (x => x.Text));
- application.Invoke (x => x.Shutdown ());
- }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдкрд╣рд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЯреЗрдХреНрд╕реНрдЯ
- [TestMethod]
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп TestFirstButtonClick ()
- {
- var рдЕрдиреБрдкреНрд░рдпреЛрдЧ = UI.Run () (> = рдирдпрд╛ рдРрдк {MainWindow = new MainWindow ()});
- var mainWindow = application.Get (x => x.MainWindow);
- var textBox = mainWindow.FindChild ((TextBox el) => el.Name == "SomeTexBox" );
- var рдмрдЯрди = mainWindow.FindChild ((Button el) => el.Content.Equals ( "рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ" );
- рдмрдЯрдиред рдмрдЯрди (ButtonBase.ClickEvent);
- Assert.AreEqual ( " рд╣рдмреНрд░рд╣реНрд░рдм " , textBox.Get (x => x.Text));
- application.Invoke (x => x.Shutdown ());
- }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рджреВрд╕рд░реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд╛рдаред
- [TestMethod]
- [HostType ( "рдореЛрд▓реНрд╕" )]
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп TestSecondButton ()
- {
- var рдЕрдиреБрдкреНрд░рдпреЛрдЧ = UI.Run () (> = рдирдпрд╛ рдРрдк {MainWindow = new MainWindow ()});
- var mainWindow = application.Get (x => x.MainWindow);
- var dateTimeExpect = рдирдпрд╛ рджрд┐рдирд╛рдВрдХ рд╕рдордп (2011, 12, 08, 12, 30, 25);
- MDateTime.NowGet = () => dateTimeExpect;
- var рдмрдЯрди = mainWindow.FindChild ((Button el) => el.Content.Equals ( "рдкрд░реАрдХреНрд╖рдг 2 рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ" ));
- рдмрдЯрдиред рдмрдЯрди (ButtonBase.ClickEvent);
- var textBox = mainWindow.FindChilds <TextBox> ()ред рдкрд╣рд▓реЗ ();
- Assert.AreEqual (dateTimeExpect.ToString) (, textBox.Get (x => x.Text));
- application.Invoke (x => x.Shutdown ());
- }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпрд╣рд╛рдБ рдореИрдВрдиреЗ
рдбреЗрдЯреНрд╕ рдЯрд╛рдЗрдо рдкрд░ рдХреЙрд▓ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЕрдм
рдореЛрд▓реНрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЗрд╕рдХрд╛ рдПрдХ рдУрд╡рд░рд╡реНрдпреВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдпрд╣рд╛рдБ ред
рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рдФрд░ рдЗрд╕рд╕реЗ рдПрдХ рд╡рд┐рдВрдбреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдХреЗ рд╕реНрдерд┐рд░ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕реВрдЯ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдИ рдЬрд╛ рд╕рдХреЗред
рдирд┐рд╖реНрдХрд░реНрд╖
UI рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рддрд░реАрдХрд╛ рдЪреБрдирдирд╛ рд╣реИ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛рдУрдВ рдФрд░ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рдореБрдЭреЗ рдЙрдирдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдФрд░ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдерд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рд▓реЗрдЦ рдЙрдкрдпреЛрдЧреА рд▓рдЧрд╛ рд╣реЛрдЧрд╛ред
рд╕рдВрджрд░реНрдн
.рдиреЗрдЯ рдпреВрдЖрдИ рдСрдЯреЛрдореЗрд╢рдирд╕рдлреЗрдж рдкрд░рд┐рдпреЛрдЬрдирд╛рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЛрдбреЗрдб рдпреВрдЖрдИ рдЯреЗрд╕реНрдЯрдкрд░реАрдХреНрд╖рдг рдкреВрд░рд╛ рдХрд░реЗрдВрдореЛрд▓реНрд╕VisualTreeHelper рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг + рдирдореВрдирд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рддрд╣рдд рдЖрд╡реЗрджрди рдХреЗ рд╕реНрд░реЛрдд (рдЖрдкрдХреЛ рддрд╛рд░реАрдЦ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрд▓реНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)