Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)

    """