class HomePage: #将GetByLocal进行实例化,获取登录页面所有元素 def __init__(self, i): self.base_driver = BaseDriver() self.driver = self.base_driver.Android_driver(i) self.get_by_local = GetByLocal(self.driver)
class ActionMethod: def __init__(self): self.basedriver = BaseDriver(0)#先传个0 简单点用于调试 self.driver = self.basedriver.Android_driver() self.get_by_local = GetByLocal(self.driver) def input(self,*args): ''' 根据页面元素和操作值进行操作 :param element_key:取LocalElement.ini,通过调用get_by_local.py :param value: :return: ''' input_element = self.get_by_local.get_element(args[0]) if input_element == None: raise Exception("没有找到对应元素",input_element) if args[1] == None: raise Exception("没有找到对应操作值", args[1]) input_element.send_keys(args[1]) def onclick(self,*args): onclick_element = self.get_by_local.get_element(args[0]) if onclick_element == None: raise Exception("没有找到对应元素",onclick_element) else: onclick_element.click() def sleep(self,*args): time.sleep(args[0]) def get_size(self): self.size = self.driver.get_window_size() width = self.size['width'] height = self.size['height'] return width, height # 向左边滑动 def swipe_left(self): # [100,200] x1 = self.get_size()[0] / 10 * 9 y1 = self.get_size()[1] / 2 x = self.get_size()[0] / 10 self.driver.swipe(x1, y1, x, y1) # 向右滑动 def swipe_right(self): # [100,200] x1 = self.get_size()[0] / 10 y1 = self.get_size()[1] / 2 x = self.get_size()[0] / 10 * 9 self.driver.swipe(x1, y1, x, y1) # 向上滑动 def swipe_up(self): # [100,200] x1 = self.get_size()[0] / 2 y1 = self.get_size()[1] / 10 * 9 y = self.get_size()[1] / 10 self.driver.swipe(x1, y1, x1, y) # 向下滑动 def swipe_down(self): # [100,200] x1 = self.get_size()[0] / 2 y1 = self.get_size()[1] / 10 y = self.get_size()[1] / 10 * 9 self.driver.swipe(x1, y1, x1, y) def swipe_on(self,derection): if derection == 'up': self.swipe_up() elif derection == 'down': self.swipe_down() elif derection == 'left': self.swipe_left() else: self.swipe_right() def tap_point(self,position,duration=None): # self.driver.tap([(147, 629), (228, 655)], 500) list_list = ast.literal_eval(position)#'list'转换成list self.driver.tap(list_list,duration)
class ActionMethod: def __init__(self): self.base_driver = BaseDriver() self.driver = self.base_driver.Android_driver(0) self.get_by_local = GetByLocal(self.driver) self.get_Get_KeypadNumber = Get_KeypadNumber(self.driver) # self.screenshot_image = ScreenshotImages(self.driver) def get_element(self, *args): element = self.get_by_local.get_element(args[0], args[1]) if element == None: return None return element def input(self, *args): # 找到元素并输入一个值 element = self.get_element(args[0], args[1]) if element == None: return None else: element.send_keys(args[2]) def click_on(self, *args): # 点击元素 element = self.get_element(args[0], args[1]) if element == None: return None element.click() def time_sleep(self, *args): # 延时,单位:秒 time.sleep(int(args[0])) # 获取屏幕的宽和高 def get_size(self, *args): size = self.driver.get_window_size() width = size['width'] height = size['height'] return width, height # 向左滑动 def swipe_left(self, *args): for i in range(int(args[0])): x1 = self.get_size()[0] / 10 * 9 x2 = self.get_size()[0] / 10 y = self.get_size()[1] / 2 self.driver.swipe(x1, y, x2, y) # 向右滑动 def swipe_right(self, *args): for i in range(int(args[0])): x1 = self.get_size()[0] / 10 x2 = self.get_size()[0] / 10 * 9 y = self.get_size()[1] / 2 self.driver.swipe(x1, y, x2, y) # 向上滑动 def swipe_up(self, *args): for i in range(int(args[0])): x = self.get_size()[0] / 2 y1 = self.get_size()[1] / 10 * 9 y2 = self.get_size()[1] / 10 self.driver.swipe(x, y1, x, y2) # 向下滑动 def swipe_down(self, *args): for i in range(int(args[0])): x = self.get_size()[0] / 2 y1 = self.get_size()[1] / 10 y2 = self.get_size()[1] / 10 * 9 self.driver.swipe(x, y1, x, y2) def result_screenshot(self, *args): # args[0]可以获取case里面的handle_value的值作为备注信息 # 封装一个driver自带的截图方法 t = time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime(time.time())) self.driver.save_screenshot( "../Screenshot/{}_screenshot_{}.PNG".format(args[0], t)) def input_password(self, *args): self.click_on(args[0], args[1]) temp = '.'.join(args[2]) pwd = temp.split('.') # print(pwd,args[0],args[1],args[2]) # print(len(pwd),type(len(pwd))) for i in range(len(pwd)): if pwd[i].isdigit() == True: print('True', pwd[i]) try: self.click_on(pwd[i], args[1]) except: self.click_on('123', args[1]) self.click_on(pwd[i], args[1]) else: print('Fales', pwd[i]) try: self.click_on( 'ABC', args[1], ) self.click_on(pwd[i], args[1]) except: print(pwd[i]) self.click_on(pwd[i], args[1]) self.click_on('ok', args[1]) # """----------------------------------------------------------------------------- # 这个方法是在登录界面受到屏蔽,无法获取密码键盘的控件信息时使用 # 用的是Open CV 图像识别的方法进行的,依赖于keyword文件夹下的方法 # --------------------------------------------------------------------------------""" def send_password(self, *args): self.click_on('triangle', args[1]) print(args[0], args[1]) self.click_on(args[0], args[1]) # self.get_Get_KeypadNumber.password_click() print(args[2]) self.get_Get_KeypadNumber.input_password(args[2]) def Install_App(self, *args): # 这里需要传入一个App的安装路径 # 如果为空,则用默认安装路径 if args[0] == None: Install_result = self.driver.install_app( 'E:/Appium/FXJC_Appium_Python/Test_APK/fxjc-app-prod-20180911-debug-signed.apk' ) # args[0] = "E:/Appium/FXJC_Appium_Python/Test_APK/fxjc-app-prod-20180911-debug-signed.apk" else: Install_result = self.driver.install_app(args[0]) print('安装结果:', Install_result) def Uninstall_App(self, *args): # 这里需要传入一个App的Activity # 如果为空,则用默认Activity if args[0] == None: # 这个是发现精彩App的Activity self.driver.remove_app('com.cs_credit_bank') # args[0] = 'com.cs_credit_bank' else: self.driver.remove_app(args[0]) def Close_App(self): # 关闭App self.driver.close_app() def Start_App(self, *args): # 启动App if args[0] == None: # self.driver.launch_app('com.alipay.mobile.quinox.LauncherActivity') self.driver.start_activity( 'com.cs_credit_bank', 'com.mapass.example.activity.MainActivity_') # com.mapass.example.activity.MainActivity_ else: self.driver.launch_app(args[0], args[1]) def switch_WEB_view(self): time.sleep(5) print('开始切换') #获取当前界面的所有窗口 WebView = self.driver.contexts print(WebView) for View in WebView: #通过for循环获取到Webview的context if 'WEBVIEW_com.cs_credit_bank' in View: #进行窗口切换 self.driver.switch_to.context(View) time.sleep(5) #获取当前所处的环境窗口 New_View = self.driver.current_context print('成功切换为:', New_View) break def switch_NATIVE_view(self): time.sleep(5) print('开始切换') #获取当前界面的所有窗口 WebView = self.driver.contexts #切换到NATIVE窗口 self.driver.switch_to.context(WebView[0]) New_View = self.driver.current_context print('成功切换为:', New_View) # View = WebView[1] # print(View) # #切换到Webview窗口 # driver.switch_to.context(View) # #获取当前所处的环境窗口 # New_View = driver.current_context # print('New_View is :',New_View) # #切换到NATIVE窗口 # driver.switch_to.context(WebView[0]) # #获取当前所处的环境窗口 # New_View = driver.current_context # print('New_View is :',New_View) """