рдбреЗрд╕реНрдХрдЯреЙрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛

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

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


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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╕рд░рд▓ рд╣реЛрдЧрд╛ - рджреЛ рдмрдЯрди рдХреЗ рд╕рд╛рде рдПрдХ рдЖрд╡реЗрджрди рд╣реИред рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкрд╣рд▓реЗ рдкрд╛рда рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд╛рда рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ (рдЗрд╕реЗ "рд╣реИрдмреНрд░рд╛рд╣реНрд░рд╛" рд╣реЛрдиреЗ рджреЗрдВ)ред рджреВрд╕рд░реЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рд╡рд░реНрддрдорд╛рди рд╕рдордп рдФрд░ рджрд┐рдирд╛рдВрдХ рд╡рд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рддрджрдиреБрд╕рд╛рд░, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рддреАрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
  1. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкрд╛рда рдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд╛рдаред
  2. рдкрд╣рд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд╛рдаред
  3. рджреВрд╕рд░реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд╛рдаред

рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди


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 .

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдпреВрдЖрдИ рдСрдЯреЛрдореЗрд╢рди рдСрдЯреЛрдореЗрд╢рдирдкреИрдЯрд░реНрди рдирд╛рдордХ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реИрдкрд░реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░рдХреЙрд▓рдкреНрд▓рд╛рдЯрдкреНрдирд╛рдЯрд░реНрди , рд╕рд┐рд▓реЗрдХреНрдЯреЗрдордкреИрдЯрд░реНрди , рдЖрджрд┐, рдЬреЛ рдЗрди рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╕реНрддрд╛рд░рдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ / рдкрддрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред

рдЧреМрд░рд╡
рдХрдорд┐рдпреЛрдВ

рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкрд╛рда рдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд╛рда
  1. [TestMethod]
  2. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдЯреЗрд╕реНрдЯрд╕реНрдЯрд╛рд░реНрдЯрдЕрдк ()
  3. {
  4. var appPath = Path.Combine (Path.GetDirectoryName ( рд╡рд┐рдзрд╛рдирд╕рднрд╛ .GetExecutingAssembly) (рд╕реНрдерд╛рди), @ ".. \ _ \ _ \ _ \ TestUI \ bin \ Debug \ TestUI.exe" ;
  5. var process = Process.Start (appPath);
  6. рдХреЛрд╢рд┐рд╢
  7. {
  8. рдзрд╛рдЧрд╛ред рд╕реЛ (5000);
  9. var mainWindow = рд╕реНрд╡рдЪрд╛рд▓рдиElement.FromHandle (process.MainWindowHandle);
  10. var buttonControl = mainWindow.FindFirst (TreeScope.Children, New PropertyCondition (рдСрдЯреЛрдореЗрд╢рди рдЗрд▓рд┐рдореЗрдВрдЯреЗрд╢рди.рдХрдВрдЯреНрд░реЛрд▓ рдЯрд╛рдЗрдкреЛрдкреНрд░реЙрдкрд░, ControlType.Button));
  11. var textBoxControl = mainWindow.FindFirst (TreeScope.Children, New PropertyCondition (рдСрдЯреЛрдореЗрд╢рди рдЗрд▓рд┐рдореЗрдВрдЯреЗрд╢рди.рдХрдВрдЯреНрд░реЛрд▓ рдЯрд╛рдЗрдкреЛрдкреНрд░реЛрдЯреА, ControlType.Edit));
  12. var textBox = (ValuePattern) textBoxControl.GetCurrentPattern (ValuePattern.Pattern);
  13. Assert.AreEqual ( "123123123" , textBox.Current.Value);
  14. }
  15. рдЕрдВрдд рдореЗрдВ
  16. {
  17. process.Kill ();
  18. }
  19. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкрд╣рд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд╛рдаред
  1. [TestMethod]
  2. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдЯреЗрд╕реНрдЯрдореЗрдереЛрдб рдпреВрдЖрдИрдЯреВрдЯреЛрдореЗрд╢рди ()
  3. {
  4. var appPath = Path.Combine (Path.GetDirectoryName ( рд╡рд┐рдзрд╛рдирд╕рднрд╛ .GetExecutingAssembly) (рд╕реНрдерд╛рди), @ ".. \ _ \ _ \ _ \ TestUI \ bin \ Debug \ TestUI.exe" ;
  5. var process = Process.Start (appPath);
  6. рдХреЛрд╢рд┐рд╢
  7. {
  8. рдзрд╛рдЧрд╛ред рд╕реЛ (5000);
  9. var mainWindow = рд╕реНрд╡рдЪрд╛рд▓рдиElement.FromHandle (process.MainWindowHandle);
  10. var buttonControl = mainWindow.FindFirst (TreeScope.Children, New PropertyCondition (рдСрдЯреЛрдореЗрд╢рди рдЗрд▓рд┐рдореЗрдВрдЯреЗрд╢рди.рдХрдВрдЯреНрд░реЛрд▓ рдЯрд╛рдЗрдкреЛрдкреНрд░реЙрдкрд░, ControlType.Button));
  11. var textBoxControl = mainWindow.FindFirst (TreeScope.Children, New PropertyCondition (рдСрдЯреЛрдореЗрд╢рди рдЗрд▓рд┐рдореЗрдВрдЯреЗрд╢рди.рдХрдВрдЯреНрд░реЛрд▓ рдЯрд╛рдЗрдкреЛрдкреНрд░реЛрдЯреА, ControlType.Edit));
  12. var textBox = (ValuePattern) textBoxControl.GetCurrentPattern (ValuePattern.Pattern);
  13. Assert.AreEqual ( "123123123" , textBox.Current.Value);
  14. var рдмрдЯрди = (InvokePattern) рдмрдЯрдиControl.GetCurrentPattern (InvokePattern.Pattern);
  15. рдмрдЯрдиред рдЗрдВрд╡реЛрдХ ();
  16. Assert.AreEqual ( " рд╣рдмреНрд░рд╣реНрд░рдм " , рдЯреЗрдХреНрд╕реНрдЯрдмреЙрдХреНрд╕ред рд╕рдорд╛рдВрддрд░ред рд╡рд╛рд▓реНрдпреВ);
  17. }
  18. рдЕрдВрдд рдореЗрдВ
  19. {
  20. process.Kill ();
  21. }
  22. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

2. рд╕рдлреЗрдж рдкрд░рд┐рдпреЛрдЬрдирд╛


рдпреВрдЖрдИ рдСрдЯреЛрдореЗрд╢рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдлреНрд░реА рдХреЛрдбреЗрдХреНрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХред рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рд╕рдорд╛рди рд╣реИрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдирд┐рдпрдВрддреНрд░рдг рдкреЗрдбрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЙрдиреНрдирдд рдПрдкреАрдЖрдИ рдореЗрдВ рднрд┐рдиреНрди рд╣реИред

рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкрд╛рда рдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд╛рда
  1. [TestMethod]
  2. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдЯреЗрд╕реНрдЯрд╕реНрдЯрд╛рд░реНрдЯрдЕрдк ()
  3. {
  4. var appPath = Path.Combine (Path.GetDirectoryName ( рд╡рд┐рдзрд╛рдирд╕рднрд╛ .GetExecutingAssembly) (рд╕реНрдерд╛рди), @ ".. \ _ \ _ \ _ \ TestUI \ bin \ Debug \ TestUI.exe" ;
  5. var рдЕрдиреБрдкреНрд░рдпреЛрдЧ = White.Core.Application.Launch (appPath);
  6. Assert.IsNotNull (рдЖрд╡реЗрджрди);
  7. var рд╡рд┐рдВрдбреЛ = application.GetWindow ( "MainWindow" );
  8. var textBox = window.Get <White.Core.UIItems.TextBox> ();
  9. Assert.IsNotNull (textBox);
  10. Assert.AreEqual ( "123123123" , textBox.Text);
  11. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкрд╣рд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЯреЗрдХреНрд╕реНрдЯ
  1. [TestMethod]
  2. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп TestWithWhite ()
  3. {
  4. var appPath = Path.Combine (Path.GetDirectoryName ( рд╡рд┐рдзрд╛рдирд╕рднрд╛ .GetExecutingAssembly) (рд╕реНрдерд╛рди), @ ".. \ _ \ _ \ _ \ TestUI \ bin \ Debug \ TestUI.exe" ;
  5. var рдЕрдиреБрдкреНрд░рдпреЛрдЧ = White.Core.Application.Launch (appPath);
  6. Assert.IsNotNull (рдЖрд╡реЗрджрди);
  7. var рд╡рд┐рдВрдбреЛ = application.GetWindow ( "MainWindow" );
  8. var textBox = window.Get <White.Core.UIItems.TextBox> ();
  9. var рдмрдЯрди = window.Get <White.Core.UIItems.Button> (SearchCriteria.ByText ( "рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ" ));
  10. рдмрдЯрди.рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ();
  11. Assert.AreEqual ( " рд╣рдмреНрд░рд╣реНрд░рдм " , рдЯреЗрдХреНрд╕реНрдЯрдмреЙрдХреНрд╕ред рдЯреЗрдХреНрд╕реНрдЯ);
  12. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

3. рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЛрдбреЗрдб рдпреВрдЖрдИ рдЯреЗрд╕реНрдЯ


рдХреЛрдбреЗрдб рдпреВрдЖрдИ - рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди, рдЬреЛ 2010 рдХреЗ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдмрд╛рд░-рдмрд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рд╣рдм рд╕рд╣рд┐рддред

рдЧреМрд░рд╡
рдХрдорд┐рдпреЛрдВ

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрдорд┐рдпреЛрдВ рдХрд╛ рд╕реЗрдЯ 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 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдлреИрд╢рди рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  1. рдирд┐рдЬреА рд╢реВрдиреНрдп AssertRender ( рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдирд╛рдо, рдлреНрд░реЗрдорд╡рд░реНрдХ рддрддреНрд╡рдлреЙрд░рдЯреЗрд╕реНрдЯ)
  2. {
  3. var рдЫрд╡рд┐ = elementForTest.Render ();
  4. var expectPath = Path.Combine (AppDomain.CurrentDomain.BaseDirectory, expectImageName);
  5. рдЕрдЧрд░ (( рдлрд╝рд╛рдЗрд▓ .Exists (рдЙрдореНрдореАрджрдкрдард┐рдд) рдФрд░& рдлрд╝рд╛рдЗрд▓ .ReadAllBytes (рдЙрдореНрдореАрджрдкрдард┐рдд)) .рд╕реБрд╡рд┐рдзрд╛рдПрдБ (рдЫрд╡рд┐))
  6. {
  7. рдлрд╝рд╛рдЗрд▓ .WriteAllBytes (Path.Combine (AppDomain.CurrentDomain.BaseDirectory, "fail_" + expectImageName), рдЫрд╡рд┐);
  8. рдирдИ AssertFailedException ( string .ormat ( "рддрддреНрд╡ {0} рдЫрд╡рд┐ рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ '{1}'" , elementForTest.Get (x => x.Name), expectImageName);
  9. }
  10. }
  11. AssertRender ( "button.png" , рдмрдЯрди);
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЧреМрд░рд╡
рдХрдорд┐рдпреЛрдВ
рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкрд╛рда рдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд╛рда
  1. [TestMethod]
  2. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдЯреЗрд╕реНрдЯрд╕реНрдЯрд╛рд░реНрдЯрдЕрдк ()
  3. {
  4. var рдЕрдиреБрдкреНрд░рдпреЛрдЧ = UI.Run () (> = рдирдпрд╛ рдРрдк {MainWindow = new MainWindow ()});
  5. var mainWindow = application.Get (x => x.MainWindow);
  6. var textBox = mainWindow.FindChild ((TextBox el) => el.Name == "SomeTexBox" );
  7. Assert.IsNotNull (textBox);
  8. Assert.AreEqual ( "123123123" , textBox.Get (x => x.Text));
  9. application.Invoke (x => x.Shutdown ());
  10. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкрд╣рд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЯреЗрдХреНрд╕реНрдЯ
  1. [TestMethod]
  2. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп TestFirstButtonClick ()
  3. {
  4. var рдЕрдиреБрдкреНрд░рдпреЛрдЧ = UI.Run () (> = рдирдпрд╛ рдРрдк {MainWindow = new MainWindow ()});
  5. var mainWindow = application.Get (x => x.MainWindow);
  6. var textBox = mainWindow.FindChild ((TextBox el) => el.Name == "SomeTexBox" );
  7. var рдмрдЯрди = mainWindow.FindChild ((Button el) => el.Content.Equals ( "рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ" );
  8. рдмрдЯрдиред рдмрдЯрди (ButtonBase.ClickEvent);
  9. Assert.AreEqual ( " рд╣рдмреНрд░рд╣реНрд░рдм " , textBox.Get (x => x.Text));
  10. application.Invoke (x => x.Shutdown ());
  11. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рджреВрд╕рд░реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд╛рдаред
  1. [TestMethod]
  2. [HostType ( "рдореЛрд▓реНрд╕" )]
  3. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп TestSecondButton ()
  4. {
  5. var рдЕрдиреБрдкреНрд░рдпреЛрдЧ = UI.Run () (> = рдирдпрд╛ рдРрдк {MainWindow = new MainWindow ()});
  6. var mainWindow = application.Get (x => x.MainWindow);
  7. var dateTimeExpect = рдирдпрд╛ рджрд┐рдирд╛рдВрдХ рд╕рдордп (2011, 12, 08, 12, 30, 25);
  8. MDateTime.NowGet = () => dateTimeExpect;
  9. var рдмрдЯрди = mainWindow.FindChild ((Button el) => el.Content.Equals ( "рдкрд░реАрдХреНрд╖рдг 2 рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ" ));
  10. рдмрдЯрдиред рдмрдЯрди (ButtonBase.ClickEvent);
  11. var textBox = mainWindow.FindChilds <TextBox> ()ред рдкрд╣рд▓реЗ ();
  12. Assert.AreEqual (dateTimeExpect.ToString) (, textBox.Get (x => x.Text));
  13. application.Invoke (x => x.Shutdown ());
  14. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдбреЗрдЯреНрд╕ рдЯрд╛рдЗрдо рдкрд░ рдХреЙрд▓ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЕрдм рдореЛрд▓реНрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЗрд╕рдХрд╛ рдПрдХ рдУрд╡рд░рд╡реНрдпреВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ ред

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

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


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

рд╕рдВрджрд░реНрдн


.рдиреЗрдЯ рдпреВрдЖрдИ рдСрдЯреЛрдореЗрд╢рди
рд╕рдлреЗрдж рдкрд░рд┐рдпреЛрдЬрдирд╛
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЛрдбреЗрдб рдпреВрдЖрдИ рдЯреЗрд╕реНрдЯ
рдкрд░реАрдХреНрд╖рдг рдкреВрд░рд╛ рдХрд░реЗрдВ
рдореЛрд▓реНрд╕
VisualTreeHelper рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг + рдирдореВрдирд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рддрд╣рдд рдЖрд╡реЗрджрди рдХреЗ рд╕реНрд░реЛрдд (рдЖрдкрдХреЛ рддрд╛рд░реАрдЦ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрд▓реНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)

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


All Articles