在写测试用例的时候,最常用的就是方法的调用,
我们在这里,把公共方法封装到一个文件中,
这样以后需要使用,直接调用这个方法就可以了。
直接上代码:
common_func.py # -*- coding: utf-8 -*- """ @ auth : carl_DJ @ time : 2020-7-9 """ ''' 公共方法封装 ''' from baseView.baseView import BaseView from public.desired_caps import appium_desired from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.by import By import logging.config import os,time,csv class Common(BaseView): #取消升级和跳过引导按钮 cancel_upgradeBtn = (By.ID,'android:id/button2') #跳过按钮 skipBtn = (By.ID,'com.tal.kaoyan:id/tv_skip') #登录/注册后浮窗广告 关闭按钮 wemedia_cancel= (By.ID,'com.tal.kaoyan:id/view_wemedia_cacel') def check_upgradeBtn(self): ''' 追加 try...except...else 语句 如果没有定位到update button, 则直接执行except 如果定位到update button,则执行else语句 :return: ''' logging.info('============check_updateBtn===============') try: element = self.driver.find_element(*self.cancel_upgradeBtn) except NoSuchElementException : logging.info('update element is not found!') else: logging.info('click cancel button') element.click() def check_skipBtn(self): ''' 追加 try...except...else 语句 如果没有定位到skip button, 则直接执行except 如果定位到skip button,则执行else语句 :return: ''' logging.info('============check_skipBtn===============') try: element = self.driver.find_element(*self.skipBtn) except NoSuchElementException: logging.info('skip element is not found!') else: logging.info('click skip button') element.click() def get_screenSize(self): ''' 获取屏幕尺寸 x:宽 y:高 :return: ''' x = self.get_window_size()['width'] y = self.get_window_size()['height'] return x,y def swipeLeft(self): ''' 向左滑动, x1:横坐标起始位置 y1:纵坐标起始位置 x2:横坐标终止位置 1000:持续时间 1000ms :return: ''' logging.info('==========swipeLeft==============') l = self.get_screenSize() y1 = int(l[1] * 0.5) x1 = int(l[0] * 0.95) x2 = int(l[0] *0.25) self.swipe(x1,y1,x2,y1,1000) def getTime(self): ''' 获取当前时间,以年-月-日 时_分_秒 形式显示 :return: ''' self.now = time.strftime("%Y-%m-%d %H_%M_%S") return self.now def getScreenShot(self,module): ''' 设置截图 :param module: :return: ''' time = self.getTime() base_path = os.path.dirname(os.path.dirname(__file__)) screenshot_path = os.path.join(base_path,'screenshot') image_file = os.path.join(screenshot_path,'%s_%s.png' %(module,time)) # image_file = os.path.dirname(os.path.dirname(__file__)) +'/screenshot/%s_%s.png' %(module,time) logging.info('get %s screenshot ' % module) self.driver.get_screenshot_as_file(image_file) def check_market_ad(self): ''' 检测登录或者注册之后的界面浮窗广告 :return: ''' logging.info('=======check_market_ad=======') try: element = self.driver.find_element(*self.wemedia_cancel) except NoSuchElementException: pass else: logging.info('close market ad') element.click() def get_csv_data(self,csv_file,line): ''' 读取csv文件里的数据 1.用到的是enumerate()方法 2.encoding= utf-8-sig:防止读取数据是出现非法字符 >> 直接写utf-8,打印结果为 ['\ufeffusername\t', 'password'] utf-8与utf-8-sig两种编码格式的区别: >>UTF-8以字节为编码单元,它的字节顺序在所有系统中都是一样的,没有字节序的问题,也因此它实际上并不需要BOM(“ByteOrder Mark”)。 >>但是UTF-8 with BOM即utf-8-sig需要提供BOM。 :param csv_file: :param line: :return: ''' logging.info('=======et_csv_data=========') with open(csv_file,'r',encoding='utf-8-sig') as file: reader = csv.reader(file) #循环,索引从1开始 for index,row in enumerate(reader,1): if index ==line: return row if __name__ == '__main__': driver = appium_desired() com = Common(driver) # com.swipeLeft() # com.getScreenShot('startAPP') csv_file = '../data/account.csv' #获取文件,并读取第一行数据 data = com.get_csv_data(csv_file,1) print(data) print(data[1])
这里的account.csv 文件内容,是这样的
嗯,封装好,以后就直接调用方法,省时省力~~