Monkeyrunnerред Android рдкрд░ рдкрд┐рдХреНрд╕реЗрд▓-рдкрд░рд┐рдкреВрд░реНрдг рд╡реЗрдм рдкреЗрдЬ рдкрд░реАрдХреНрд╖рдг

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

рдХрд╛рд░реНрдп

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

рдирд┐рд░реНрдгрдп рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо

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

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдордВрдХреАрд░рдирд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЯреЗрдХрдиреИрдкрд╢реЙрдЯ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдФрд░ рдЙрдирдХреА рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд┐рд▓реНрдХреБрд▓ рдЕрджреНрднреБрдд ImageMagick рд╣реИ , рдЬреЛ рдЖрдкрдХреЛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЫрд╡рд┐рдпрд╛рдВ рдХрд┐рддрдиреА рд╕рдорд╛рди рд╣реИрдВ, рдФрд░ рди рдХреЗрд╡рд▓ 100% рдореИрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред ImageMagic рдореЗрдВ рдХрдИ рддреБрд▓рдирд╛рддреНрдордХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИрдВ, рдореИрдВ -рдореЗрдЯреНрд░рд┐рдХ рдЖрд░рдПрдордПрд╕рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреГрд╖реНрда рдХреЛ рдиреАрдЪреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдХрдм рд╣реИ, рдпрд╣ рдЕрдВрддрд┐рдо рджреЛ рд╕реНрдХреНрд░реАрди рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдпрджрд┐ рд╡реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИред
Python-junit-xml рдХрд╛ рдЙрдкрдпреЛрдЧ CI рдпрд╛ рдЖрдкрдХреЗ рдкрд╕рдВрджреАрджрд╛ IDE рдХреЛ рдкрд░рд┐рдгрд╛рдо рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдиреБрдХрд╕рд╛рди

рдЕрдм рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд: рдпрджрд┐ рдЖрдк рдпрд╣ рд╕рдм "рд╕рд┐рд░ рдкрд░" рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВред

1. рд╡рд┐рдВрдбреЛрдЬ
рдмрдВрджрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк "рд╕реБрд╡рд┐рдзрд╛" рд╣реИ, рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдмрдВрджрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдкреБрддрд▓рд╛ рдЦреБрдж рдЭреВрда рдмреЛрд▓рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдирддреАрдЬрддрди, рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рднреА рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдкрде рдФрд░ рдЖрдпрд╛рдд рдирд┐рд░реНрджреЗрд╢ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ
рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реНрд╡рдпрдВ рд╣реА рдЕрдкрдирд╛ рд╕реНрдерд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЗрд╡рд▓ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдкрд░ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
filepath = path.split(os.path.realpath(__file__))[0] BASE_PATH = path.split(filepath)[0].encode(FILENAMES_ENCODING) try: import config from junit_xmls import TestSuite, TestCase except ImportError: #dirty hack that loads 3rd party modules from script's dir not from working dir, which is always changed by windows monkeyrynner import imp config = imp.load_source('config', BASE_PATH+'/src/config.py') junit_xml = imp.load_source('junit_xml', BASE_PATH+'/src/junit_xml/__init__.py') TestSuite = junit_xml.TestSuite TestCase = junit_xml.TestCase 


2. рд░реВрд╕реА рдЕрдХреНрд╖рд░
рд░реВрд╕реА рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓ рд░рд╣рд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреБрддрд▓рд╛ рджреВрд╕рд░реЗ рдкрд╛рдпрдерди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдпреВрдирд┐рдХреЛрдб рдФрд░ рд░рд╛рд╖реНрдЯреНрд░реАрдп рдкреНрд░рддреАрдХреЛрдВ рдХреА рд╕рднреА рдЬреНрдЮрд╛рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдореБрдЭреЗ рдЬрд╣рд╛рдБ рднреА рд╕рдВрднрд╡ рд╣реЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдерд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд junit_xml, рдЬрд┐рд╕рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рд░рд╛рд╖реНрдЯреНрд░реАрдп рдкрд╛рддреНрд░реЛрдВ рд╕реЗ рдЕрдирднрд┐рдЬреНрдЮ рдерд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпреВрдирд┐рдХреЛрдб рдореЗрдВ рдирд╛рдо рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
 filePath.decode("utf-8") 

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

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

4. рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд
рдпрджрд┐ рдЖрдк рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ 10-20 рдкреГрд╖реНрда рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдИ рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрд╕ 10-20 рдЯреИрдм рдмрдирд╛рддрд╛ рд╣реИ, рд╕рдордп рдХреЗ рд╕рд╛рде рд╡реЗ рд╕рднреА рдореЗрдореЛрд░реА рдХреЛ рдЯрдЯреЛрд▓реЗрдВрдЧреЗ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреГрд╖реНрда рд▓реЛрдбрд┐рдВрдЧ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдмрдВрджрд░реЛрдВ рдХреЛ рдмрд╕ рд╕рдордп рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рджреЗрдЧрд╛ред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╣реИрдХ рдХреЗ рд▓рд┐рдП рдЧрдпрд╛: рдПрдХ рдирдпрд╛ рдкреЗрдЬ рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╡рд░реНрддрдорд╛рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╕ adb рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ
 device.shell('am force-stop ' + BROWSER_PACKAGE_NAME) 

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

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

6. рд╕реНрдХреНрд░реАрди рд▓реЙрдХ
рдпрджрд┐ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рдордп рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдмреНрд▓реЙрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдиреВ рдмрдЯрди рдХреЛ рджрдмрд╛рдХрд░ (рдХрд┐рд╕реА рдЕрдЬреНрдЮрд╛рдд рдХрд╛рд░рдг рд╕реЗ, рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдЕрдирд▓реЙрдХ рдХрд░реЗрдЧрд╛)
 MonkeyDevice.press("KEYCODE_MENU", MonkeyDevice.DOWN_AND_UP) 

рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЕрдирд▓реЙрдХ рдХрд┐рдП рдЧрдП рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдпрд╣ рдореЗрдиреВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рд▓реЙрдХ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдбрдВрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  lockScreenRegexp = re.compile('mShowingLockscreen=(true|false)') result = lockScreenRegexp.search(device.shell('dumpsys window policy')) if result: return (result.group(1) == 'true') raise RuntimeError("Couldn't determine screen lock state") 


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

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░

рд╕рднреА рд╕рдВрдкрд╛рджрди рдХреЗ рд╕рд╛рде, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рд░ 5 рдорд┐рдирдЯ рдореЗрдВ рдХреНрд░реИрд╢ рдХреЗ рдбрд░ рдХреЗ рдмрд┐рдирд╛ рдкреГрд╖реНрда рдкреНрд░рджрд░реНрд╢рди рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╛ рддреЛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдпрд╛ рдПрдУрдПрд╕рдкреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╡реИрдирд┐рд▓рд╛ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реЗ рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреБрдирд╢реНрдЪ рдХреЛрдб рдмрд┐рдЯрдмрдХреЗрдЯ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдФрд░ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реИред

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


All Articles