def wait_for_open_spacial_function(self,
                                       sp_text="",
                                       resourceIdMatches_txt="",
                                       timeout=600):
        failed_time = 0

        self.logout(self.my_func_name(),
                    "Wait for %s spacial function." % self.app_package)
        for i in range(timeout):
            unclock_android_o_screen()
            if i % 5 == 0:
                kill_adb_uiautomator_block()
            if resourceIdMatches_txt == "":
                if self.device(text=sp_text).exists:
                    return True
            else:
                if self.device(resourceIdMatches=".+/%s$" %
                               resourceIdMatches_txt).exists:
                    return True
            i += 1
            time.sleep(1)
            if not app_exception_kill_case(self.app_package):
                if failed_time > 6:
                    self.logout(self.my_func_name(),
                                "%s test is failed..." % self.app_package)
                    return False
                failed_time += 1
                continue
            failed_time = 0
        return False
 def click_ui_button_by_text(self,
                             key_code="",
                             textcont="",
                             index_nu="",
                             timeout=10):
     icount = 0
     kill_adb_uiautomator_block_old()
     while icount < timeout:
         unclock_android_o_screen()
         if not app_exception_kill_case(self.app_package):
             self.logout(self.my_func_name(),
                         "%s test is failed..." % self.app_package)
             return False
         if not "" == index_nu:
             if not "" == key_code:
                 app_dev = self.device(index=index_nu, text=key_code)
             if not "" == textcont:
                 app_dev = self.device(index=index_nu,
                                       textContains=textcont)
         else:
             if not "" == key_code:
                 app_dev = self.device(text=key_code)
             if not "" == textcont:
                 app_dev = self.device(textContains=textcont)
         if app_dev.exists:
             app_dev.click()
             icount = 0
             break
         time.sleep(1)
         icount += 1
         kill_adb_uiautomator_block_old()
     if icount > 0:
         return False
     else:
         return True
    def click_ui_button_by_resourceIdMatches(self,
                                             key_code,
                                             not_id=False,
                                             timeout=10,
                                             package=''):
        icount = 0
        kill_adb_uiautomator_block_old()
        self.logout(self.my_func_name(), "%s click..." % key_code)
        while icount < timeout:
            unclock_android_o_screen()

            if package == "" and not app_exception_kill_case(self.app_package):
                self.logout(self.my_func_name(),
                            "%s test is failed..." % self.app_package)
                return False
            if not_id:
                app_dev = self.device(resourceIdMatches="%s" % key_code)
            else:
                app_dev = self.device(resourceIdMatches=".+/%s$" % key_code)
            if app_dev.exists:
                app_dev.click()
                icount = 0
                break
            time.sleep(1)
            icount += 1
            kill_adb_uiautomator_block_old()
        if icount > 0:
            return False
        else:
            return True
 def click_ui_button_by_text_or_resid(self,
                                      key_code='',
                                      resid='',
                                      timeout=10):
     icount = 0
     kill_adb_uiautomator_block_old()
     while icount < timeout:
         unclock_android_o_screen()
         if not app_exception_kill_case(self.app_package):
             self.logout(self.my_func_name(),
                         "%s test is failed..." % self.app_package)
             return False
         if resid == "":
             app_dev = self.device(text=key_code)
         else:
             app_dev = self.device(resourceId=resid)
         if app_dev.exists:
             app_dev.click()
             icount = 0
             break
         time.sleep(1)
         icount += 1
         kill_adb_uiautomator_block_old()
     if icount > 0:
         return False
     else:
         return True
 def wait_for_compelet_for_fps(self, timeout=100, ABS=30):
     i = 0
     kill_uiautomator()
     if self.watt_operate.watt_flags:
         self.watt_operate.start_watt()
     # time.sleep(5)
     while i < timeout:
         # unclock_android_o_screen()
         if wait_for_boot():
             if not app_exception_kill_case(self.app_package):
                 self.logout(self.my_func_name(),
                             "%s test is failed..." % self.app_package)
                 i = 0
                 break
             i += 10
             time.sleep(10)
             self.logout(self.my_func_name(),
                         "\r>>>Please wait for test complete ... %s(s)" % i)
         else:
             time.sleep(10)
     if i == 0:
         # kill_adb_uiautomator_block()
         if self.watt_operate.watt_flags:
             self.watt_operate.stop_watt()
         return False
     else:
         if self.watt_operate.watt_flags:
             self.watt_operate.stop_watt()
             try:
                 self.watt_operate.watt_result_treat(ABS)
             except Exception, e:
                 self.logout(self.my_func_name(),
                             "watt_operate error %s." % e)
                 return False
         return True
 def wait_for_complete(self,
                       complete_text,
                       timeout=1800,
                       splittime=5,
                       ABS=30,
                       skipstep=30,
                       package=''):
     i = 0
     failed_time = 0
     if self.watt_operate.watt_flags:
         self.watt_operate.start_watt()
     if not splittime == 5:
         time.sleep(splittime)
     kill_adb_uiautomator_block_old()
     while i < timeout:
         unclock_android_o_screen()
         kill_adb_uiautomator_block()
         if package == '' and not app_exception_kill_case(self.app_package):
             if failed_time > 2:
                 if self.watt_operate.watt_flags:
                     self.watt_operate.stop_watt()
                 return False
             failed_time += 1
             continue
         app_dev = self.device(resourceIdMatches=".+/%s$" % complete_text)
         if app_dev:
             if app_dev.exists:
                 print
                 self.logout(self.my_func_name(),
                             "%s test finshed..." % self.app_name)
                 if self.watt_operate.watt_flags:
                     self.watt_operate.stop_watt()
                     try:
                         self.watt_operate.watt_result_treat(ABS)
                     except Exception, e:
                         self.logout(self.my_func_name(),
                                     "watt_operate error %s." % e)
                         return False
                 return True
         else:
             i += skipstep
             time.sleep(skipstep)
             self.logout(self.my_func_name(),
                         "\r>>>Please wait for test complete. %s (s)" % i)
             failed_time = 0
 def wait_for_complete_ex(self, complete_text, timeout=1800, ABS=30):
     i = 0
     failed_time = 0
     self.logout(self.my_func_name(),
                 "%s test waiting..." % self.app_package)
     kill_adb_uiautomator_block()
     if self.watt_operate.watt_flags:
         self.watt_operate.start_watt()
     while i < timeout:
         unclock_android_o_screen()
         if self.device(resourceId="%s" % complete_text).exists:
             print
             self.logout(self.my_func_name(),
                         "%s test finshed..." % self.app_package)
             if self.watt_operate.watt_flags:
                 self.watt_operate.stop_watt()
                 try:
                     self.watt_operate.watt_result_treat(ABS)
                 except Exception, e:
                     self.logout(self.my_func_name(),
                                 "watt_operate error %s." % e)
                     return False
             return True
         else:
             i += 5
             kill_adb_uiautomator_block()
             time.sleep(5)
             if not app_exception_kill_case(self.app_package):
                 if failed_time > 2:
                     self.logout(self.my_func_name(),
                                 "%s test is failed..." % self.app_package)
                     if self.watt_operate.watt_flags:
                         self.watt_operate.stop_watt()
                     return False
                 failed_time += 1
                 continue
             sys.stdout.write("\r>>>Please wait for test complete. %s (s)" %
                              i)
             sys.stdout.flush()
             failed_time = 0
 def wait_for_root_page(self,
                        root_text="",
                        decription_text="",
                        timeout=300):
     failed_time = 0
     self.logout(self.my_func_name(),
                 "Wait for %s root page" % self.app_name)
     #self.logout(self.my_func_name(),"Wait %s ------"%root_text)
     for i in range(timeout):
         unclock_android_o_screen()
         if i % 5 == 0:
             kill_adb_uiautomator_block_old()
             kill_uiautomator()
         if decription_text == "":
             if self.device(resourceIdMatches=".+/%s$" % root_text).exists:
                 print
                 break
         else:
             if self.device(description="%s" % decription_text).exists:
                 print
                 break
         i += 1
         time.sleep(1)
         if not app_exception_kill_case(self.app_package):
             if failed_time > 6:
                 self.logout(self.my_func_name(),
                             "%s test is failed..." % self.app_package)
                 return False
             failed_time += 1
             continue
         sys.stdout.write("\r>>>Please wait for %s root page. %s (s)" %
                          (self.app_name, i))
         sys.stdout.flush()
         failed_time = 0
     if i >= timeout:
         return False
     else:
         return True
 def click_ui_button_by_resourceIdMatches_to_right_resourceIdMatches(
         self, test_text, key_code, timeout=10):
     icount = 0
     kill_adb_uiautomator_block_old()
     while icount < timeout:
         unclock_android_o_screen()
         if not app_exception_kill_case(self.app_package):
             self.logout(self.my_func_name(),
                         "%s test is failed..." % self.app_package)
             return False
         app_dev = self.device(resourceIdMatches=".+/%s$" % test_text)
         if app_dev.exists:
             right_bt = app_dev.right(resourceIdMatches=".+/%s$" % key_code)
             if right_bt.exists:
                 right_bt.click()
                 icount = 0
                 break
         time.sleep(1)
         icount += 1
         kill_adb_uiautomator_block_old()
     if icount > 0:
         return False
     else:
         return True