Appium自动化框架从0到1之 公共方法的封装

简介: Appium自动化框架从0到1之 公共方法的封装

在写测试用例的时候,最常用的就是方法的调用,

我们在这里,把公共方法封装到一个文件中,


这样以后需要使用,直接调用这个方法就可以了。


直接上代码:

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 文件内容,是这样的


嗯,封装好,以后就直接调用方法,省时省力~~


目录
相关文章
|
4天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
39 8
|
9天前
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
9天前
|
数据管理 jenkins 测试技术
自动化测试框架的设计与实现
在软件开发周期中,测试是确保产品质量的关键步骤。本文通过介绍自动化测试框架的设计原则、组件构成以及实现方法,旨在指导读者构建高效、可靠的自动化测试系统。文章不仅探讨了自动化测试的必要性和优势,还详细描述了框架搭建的具体步骤,包括工具选择、脚本开发、执行策略及结果分析等。此外,文章还强调了持续集成环境下自动化测试的重要性,并提供了实际案例分析,以帮助读者更好地理解和应用自动化测试框架。
|
9天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
7月前
|
测试技术 API Python
Appium控件交互策略:优化自动化测试效率的关键方法
该文介绍了如何使用Selenium与APP进行交互,包括点击、输入和状态判断等操作。例如,通过element.click()点击控件,element.send_keys()输入文本,以及element.is_displayed()检查元素是否可见。还展示了如何获取元素属性,如resource-id、text和class,并提供了Python代码示例来定位并操作APP元素,如滑动条的显示、可点击性检测及点击滑动条中心位置。在编写测试脚本时,应注意元素定位和状态验证以确保测试稳定性。
|
测试技术 Python
Appium自动化框架从0到1之 执行测试用例& 生成测试报告&发送邮件
Appium自动化框架从0到1之 执行测试用例& 生成测试报告&发送邮件
184 1
|
JSON Java 测试技术
Python + Appium 自动化操作微信入门
Python + Appium 自动化操作微信入门
246 0
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
85 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
4月前
|
测试技术 Android开发 iOS开发
Appium 是一个开源的自动化测试框架,它支持多种平台和多种编程语言
Appium是一款开源自动化测试框架,支持iOS和Android多平台及多种编程语言。通过WebDriver协议,开发者可编写自动化测试脚本。在iPhone上实现屏幕点击等操作需安装Appium及其依赖,启动服务器,并设置所需的测试环境参数。利用Python等语言编写测试脚本,模拟用户交互行为,最后运行测试脚本来验证应用功能。对于iPhone测试,需准备真实设备或Xcode模拟器。
133 1
|
7月前
|
Web App开发 小程序 Android开发
Appium微信小程序自动化环境准备
Appium微信小程序自动化环境准备
231 1