APP自动化02-app项目

 

 

 

 

baseaction.py

 

 build_data.py

yaml数据读取

 

 init_driver.py

 

 统一入口,handle.py

 

handle_login.py

 

login_page.py

 

 test_login.py

 

 

 

baseaction代码:

from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver.support.wait import WebDriverWait


class BaseAction:

    def __init__(self, driver):
        self.driver = driver

    def get_element(self, feature):
        wait = WebDriverWait(self.driver, 5, 1)

        try:
            obj = wait.until(lambda x: x.find_element(*feature))
        except Exception:
            # 此时有异常,此时返回None
            return None
        else:
            # 没有异常
            return obj

    # 自定义工具方法:只负责获取屏幕大小
    def get_size(self):
        return self.driver.get_window_size()

    # 自定义工具方法:从右向左滑动
    def swipe_left(self):
        # 不能将坐标写死,需要由当前的屏幕分辨率来自由的决定
        # 想办法来获取当前屏幕的尺寸
        obj_size = self.get_size()
        w = obj_size["width"]
        h = obj_size["height"]

        self.driver.swipe(w * 0.9, h * 0.5, w * 0.1, h * 0.5)

    def swipe_up(self, t=1500):
        # 不能将坐标写死,需要由当前的屏幕分辨率来自由的决定
        # 想办法来获取当前屏幕的尺寸
        obj_size = self.get_size()
        w = obj_size["width"]
        h = obj_size["height"]

        self.driver.swipe(w * 0.5, h * 0.9, w * 0.5, h * 0.1, t)

    def execute_tap(self, feature):
        # 此方法在调用时 不确定用户传入的是元素对象还是元组
        # 所以我们可以通过代码来进行判断
        action = TouchAction(self.driver)

        if isinstance(feature, tuple):
            # 说明用户传入的是元组信息
            feature = self.get_element(feature)

        action.tap(feature).perform()

    def execute_input(self, ele, val):
        # 判断用户输入的是否为元组
        if isinstance(ele, tuple):
            # 如果是一个元组,则直接获取元素
            ele = self.get_element(ele)
        ele.send_keys(val)

    def get_ele_recursion(self, feature):
        # 1 查找目标元素
        # 如果说找到了,则直接返回当前元素
        # 如果说没有找到,则滑动屏幕,再次查找
        obj = self.get_element(feature)
        if obj:
            # 代码如果走到这里表进找到了
            return obj
        else:
            # 代码如果走到这里就说明没有找到
            # 滑屏,接着找
            self.swipe_up(t=3000)
            return self.get_ele_recursion(feature)

    # 7 自定义工具方法
    def get_ele_by_parent(self, par, sub):
        # 当前方法之所以存在就是为了去查找后代,因此不考虑,祖先不存在的情况
        parent = self.driver.find_element(*par)
        wait = WebDriverWait(parent, 5, 1)
        try:
            obj = wait.until(lambda x: x.find_element(*sub))
        except Exception:
            return None
        else:
            return obj

    

 

posted @ 2019-07-24 00:54  snailon  阅读(385)  评论(0)    收藏  举报