8.Appium PO模型实战

本文介绍了如何在自动化测试中应用Page Object Model(PO)思想,提高代码可读性和维护性。通过将每个页面视为一个对象,创建相应的类来处理元素定位和业务操作。详细讲解了从po模型概述到case.py的封装过程,包括file.py的公共方法、配置文件的使用、base_driver.py的appium启动以及po.py的元素操作逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.po模型概述

我们进行自动化测试时,如果把代码都写在一个脚本中,代码的可读性会变差,且后期代码维护也麻烦,最好的想法就是测试对象和测试用例可以分离,可以很快定位问题,代码可读性高,也比较容易理解。这里推荐大家在自动化框架中加入PO模型思想,那什么是PO模型呢?

所谓的PO就是page object,通俗解释一下就是每个页面当成一个对象,给这些页面写一个类,主要就是完成元素定位和业务操作。

而在实际的用例书写中,你就会发小,UI自动化的操作是比较固定的,常用的方法比较固定(点击、传入键值、截图等),而不同的是所操作的元素,这样的话我们只需要传入不同的元素即可。

详情请点击 https://study.163.com/course/introduction/1209833813.htm 查看

整体架构如下:

2.封装file.py

file.py中存放的是一些公共的方法,比如:读取配置文件、获取元素、加载用例等等

import re
import os

import logging
import logging.config
CON_LOG=os.path.abspath((os.path.dirname((os.path.dirname(__file__))))+'/config/log.conf')
logging.config.fileConfig(CON_LOG)
logging=logging.getLogger()

import configparser

from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
import time
from datetime import datetime

import warnings
warnings.simplefilter("ignore", ResourceWarning)

import subprocess

class ReadTxt():
    def __init__(self,file_path=None):
        if file_path==None:
            self.file_path=os.path.abspath((os.path.dirname(os.path.dirname(__file__)))+'/config/app_info.txt')
        else:
            self.file_path=file_path
    def get_appinfo(self,value): #读取app的配置文件app_info.txt
        logging.info("读取app_info.txt文件")
        with open(self.file_path) as f:
            lines=f.readlines()
        for line in lines:
            key_value=re.split('=',line)
            if key_value[0]==value:
                return key_value[1].replace("\n","")
            else:
                continue

class ReadIni():  #读取ini文件的类
    def __init__(self,file_path=None):
        if file_path==None:
            self.file_path=os.path.abspath((os.path.dirname(os.path.dirname(__file__)))+'/config/page.ini')
        else:
            self.file_path=file_path
        self.data=self.read_ini()
    def read_ini(self):
        read_ini=configparser.ConfigParser()
        read_ini.read(self.file_path,encoding="utf-8-sig")
        return read_ini

    def get_value(self,session,key):
        logging.info("get value: ["+session +"] - [" + key +"] from "+ self.file_path )
        try:
            value=self.data.get(session,key)
        except:
            logging.error("获
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术提高效率

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值