一)框架目录的结构

二)config包当中的config.ini文件主要是用来存项目的绝对路径,是为了后续跑用例和生成测试报告做准备
然后目前的配置文件大都会用yaml,ini,excel,还有.py也就是python文件来进行管理这里用的是ini文件。

三)config包当中的globalconfig文件主要是用来生成项目的路径,测试用例,测试报告的路径
其中调用了ReadConfigIni这个类来读取ini格式的文件。

四)Data.xlsx主要是用来存放项目的url,账号和密码的
通过excel来存放,可以增加数据的稳定性,后面会通过封装读取excel文档的工具类,来对excel文档中的数据进行读取

五)public包中pages包中的BaseTestCase模块主要是用来放基类的
当中并且通过set_driver传入一个driver对象来进行设置driver对象,这其实就是单例设计模式的体现然后通过get_driver来拿driver,
所以只要继承BaseTestCase这个基类,就可以拿到这个类当中的一切类方法。然后定位页面元素
用find_element这个类方法来进行封装,可以使得传入的参数是一个
元组,然后这里其实用到了Java当中的page object设计模式,也就是所谓的PO设计模式,使得页面
中的每一个控件都变成了对象的属性。



六)public包中pages包中的login模块主要封装了项目的登录,首先创建一个driver
对象,然后通过调用set_driver方法把driver传给基类,这个地方是最为关键的
地方,所以基类中的driver,其实就是这个地方传进去的,然后把driver对象赋值
变成了BaseTestCase这个基类的类变量也就是类的属性,所以后续基类当中的类方法
其实都是使用的这个login模块中创建的这个driver对象,这样的目的就是可以保证我们
的项目从头到尾都是使用的同一个driver对象,同一个driver指的就是打开的为同一个
chrome浏览器。

七)这里封装了一个读取excel的工具类
因为后续我们的项目的账号和密码都存在excel文档中去了,所以需要封装一个
读取excel的工具类,来读取账号和密码,其中用到了xlrd模块来读取。

八)Login_data模块中主要是读取excel然后返回url,账号,密码
get_password方法因为生成的数据是浮点数,所以用了int函数进行转换。

九)封装了一个发送邮件的工具类,值得注意的是这里用的是163的smtp服务器
这个代码是不适用QQ服务器的,而且pwd是163邮箱的授权码,不是密码
这个地方需要注意。

十)PageElement这个模块很为关键,这个PageElement类当中封装了所有页面的网页元素
这里其实就是用到了让一个项目中的所有元素定位和用例流程和最终的用例进行分层处理
这个设计有点像RF框架当中的三层封装设计模式:元素层,流程层和案例层,但是这样处理
有一个问题就是代码量会很多。但是优势也是非常明显的
优势如下:
1.让元素定位,流程,案例进行了分离
2.前端代码关于元素定位有改动可以随时进行处理,修改非常方便
3.让代码间的耦合性降低
4.降低代码的维护成本
5.代码的复用性高
6.采用标准的page object页面对象设计模式,符合现在主流ui自动化框架的标准搭配

十一)这里封装了一个工具类,主要是用来读取ini文件的
需要先在dos窗口用pip install configparser来安装configparser模块

十二)run模块中主要是用来加载和运行所有的用例,并且生成测试报告和发送测试报告。

十三)编写测试用例,后续有当前模块的测试用例就可以更新在当前这个模块中
然后进行断言。

基于PO和单例设计模式用python+selenium进行ui自动化框架设计的更多相关文章

  1. python+selenium封装UI自动化框架

    seleinum框架 框架的思想:  解决我们测试过程中的问题:大量的重复步骤,用自动化来实现    1)配置和程序的分离    2)测试数据和程序的分离    3)不懂编程的人员可以方便使用:使用的 ...

  2. Python中的单例设计模式

    1)设计模式: 是前人工作的总结和提炼.通常,被人们广泛流传的设计模式.     某一问题的特定解决方案,使用设计模式是为了可重用代码,是代码更容易被人理解, 增加代码的可用性. 2)单例设计模式: ...

  3. python小总结3(异常、单例设计模式)

    一.异常 AttributeError:试图访问一个对象没有的成员[属性和方法] ValueError:值错误,传入了一个不期望的值 ImportError:无法导入模块或者包:基本上路径问题 Ind ...

  4. Python——单例设计模式

    单例设计模式: 让类创建的对象,在系统中只有唯一的实例, 使用python类内置的__new__()方法实现,__new__()方法在创建对象时会被自动调用,通过重写__new__()方法,使得无论用 ...

  5. python学习【第十篇】单例设计模式

    单例设计模式 目的:让类创建对象,在系统中只有唯一的实例,让每一次创建的对象返回的内存地址都是相同的. __new__方法 使用类名创建对象时,python解释器首先会调用__new__方法为对象分配 ...

  6. python之单例设计模式

    设计模式之单例模式 单例设计模式是怎么来的?在面向对象的程序设计中,当业务并发量非常大时,那么就会出现重复创建相同的对象,每创建一个对象就会开辟一块内存空间,而这些对象其实是一模一样的,那么有没有办法 ...

  7. python基础--反射、元类、单例设计模式

    反射:reflect,反射指的是一个对象应该具备可以检测.修改.增加自身属性的能力,反射就是通过字符串操作属性 hasattr(对象,带查询的属性名称) 判断某个对象中是否存在某个属性 getattr ...

  8. iOS 中的单例设计模式

    单例设计模式:在它的核心结构中只包含一个被称为单例类的特殊类.例如文件管理中的NSUserDefault,应用程序中的UIApplication,整个应用程序就这一个单例类,负责应用程序的一些操作,单 ...

  9. Java设计模式之单例设计模式 入门实例

    一.基础概念 (1).单例设计模式:保证一个类在内存中的对象唯一性. (2).应用场景:数据都存储在配置文件的对象中,多个程序对同一个配置文件的对象进行操作.一个程序要基于另一个程序操作后的结果进行操 ...

随机推荐

  1. Java JDK 1.8 安装及配置

    1.下载 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 要注册,注 ...

  2. maven的核心概念——POM

    Project Object Model:项目对象模型.将Java工程的相关信息封装为对象作为便于操作和管理的模型.Maven工程的核心配置.可以说学习Maven就是学习pom.xml文件中的配置. ...

  3. 关于FrameLayout中覆盖的问题

    FrameLayout中xml文件中写在下方的控件会默认覆盖上方的控件,如图,我准备实现如下效果: 这时recyclerview就要写在前面 如果recyclerview写在下面就会覆盖掉我linea ...

  4. netty 的事件驱动

    netty 是事件驱动的,这里面有两个含义,一是 netty 接收到 socket 数据后,会产生事件,事件在 pipeline 上传播,二是事件由特定的线程池处理. NioEventLoop 轮询网 ...

  5. 基于单片机的心型LED灯的设计与实现

    #include<reg51.h> #include<intrins.h> #define char unsigned char #define unit unsigned i ...

  6. srpingboot web - 启动(3) 监听器

    接上一篇 一. getRunListeners() 在run() 方法中调用了 getRunListeners(args) 方法, 先看一下这个方法干了什么 private SpringApplica ...

  7. nvm,nrm和yarn

    nvm Node Version Management nvm list 查看所有已安装的 node 版本 nvm install 版本号 安装指定版本的 node nvm use 版本号 切换到指定 ...

  8. How Many Answers Are Wrong HDU - 3038 带边权并查集

    #include<iostream> #include<cstring> using namespace std; ; int d[N],p[N]; int find(int ...

  9. PAT (Basic Level) Practice (中文)1033 旧键盘打字 (20 分)

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行中分别给出坏掉的那些键.以及应该输入 ...

  10. PAT (Basic Level) Practice (中文)1021 个位数统计 (15 分)

    给定一个 k 位整数 1 (0, ,, d​k−1​​>0),请编写程序统计每种不同的个位数字出现的次数.例如:给定 0,则有 2 个 0,3 个 1,和 1 个 3. 输入格式: 每个输入包含 ...