python-appium,封装了一些base方法

#!/usr/bin/env python 
# -*- coding:utf-8 -*-

from appium.webdriver.common.appiumby import AppiumBy
from Bridge_app_auto.common.logs import Log
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from appium.webdriver.common.touch_action import TouchAction


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

    def find_element_id(self, data):  # id获取元素信息  需要注意的是,获取一类的都需要return 返回
        return self.driver.find_element(AppiumBy.ID, data)

    def find_element_xpath(self, data):  # xpath获取元素信息  需要注意的是,获取一类的都需要return 返回
        return self.driver.find_element(AppiumBy.XPATH, data)

    def find_elements_id(self, *data):  # 获取一组元素
        return self.driver.find_elements(AppiumBy.ID, *data)

    def find_element_text(self, text):
        message = '//*[@text=\'{}\']'.format(text)
        return self.driver.find_element_by_xpath(message)

    def click_element_id(self, data):  # 点击
        test = self.find_element_id(data)
        test.click()

    def click_element_xpath(self, data):  # 点击
        test = self.find_element_xpath(data)
        test.click()

    def input_text_id(self, text, data):  # 输入文本信息
        test = self.find_element_id(data)
        test.clear()  # 先清除
        test.send_keys(text)  # 再输入

    def input_text_xpath(self, text, data):  # 输入文本信息
        test = self.find_element_xpath(data)
        test.clear()  # 先清除
        test.send_keys(text)  # 再输入

    def get_text_xpath(self, data):  # 获取指定元素的text
        test = self.find_element_xpath(data)
        return test.text

    def roll_to_ele(self, data):  # 向下滑动屏幕直至某元素出现点击该元素
        # 获取屏幕宽高
        width = self.driver.get_window_size()['width']
        height = self.driver.get_window_size()['height']

        i = 0
        while i < 10:
            try:
                self.find_element_xpath(data).click()  # 尝试点击元素
                break
            except Exception as e:
                self.driver.swipe(width / 2, height * 0.8, width / 2, height * 0.2)  # 滑动屏幕
                i = i + 1

    def fuzzy_match_text(self, text, timeout=50):  # 模糊匹配提示期望的文本,等待直到获取成功,并返回文本值
        try:
            # 模糊匹配组成提示的xpath
            message = '//*[@text=\'{}\']'.format(text)
            # 隐式等待,直到匹配到对应xpath
            toast_element = WebDriverWait(self.driver, timeout).until(lambda x: x.find_element_by_xpath(message))
            # 打印获取到的文本
            return toast_element.text
        except Exception as e:
            Log().error("获取可视元素失败:{}".format(e))

    def slip_right_ele(self, data):  # 定位某元素,并向右滑动一段距离
        ele = self.find_element_xpath(data)
        ele_size = ele.size
        width = ele_size['width']  # 获取元素的宽
        height = ele_size['height']  # 获取元素的高
        x = ele.location['x']
        y = ele.location['y']  # 获取元素左上角坐标
        start_x = x + width  # 滑动起始坐标
        start_y = y
        end_x = x + width / 2  # 滑动结束坐标
        end_y = y
        self.driver.swipe(start_x, start_y, end_x, end_y)

    def get_coordinate(self, data):  # 获取元素的中心坐标
        ele = self.find_element_xpath(data)
        ele_size = ele.size
        width = ele_size['width']  # 获取元素的宽
        height = ele_size['height']  # 获取元素的高
        x = ele.location['x']
        y = ele.location['y']  # 获取元素左上角坐标

        return x + width / 2, y + height / 2

    def get_left_coordinate(self, data):  # 获取元素的左上坐标
        ele = self.find_element_xpath(data)
        x = ele.location['x']
        y = ele.location['y']  # 获取元素左上角坐标

        return x, y

    def click_coordinate(self, x, y):  # 按坐标点击
        self.driver.tap([(x, y)])



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值