#!/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)])
python-appium,封装了一些base方法
于 2022-09-09 16:49:23 首次发布