Python+Selenium+unittest 框架学习总结

    近期学习了自动化框架,基于Python自带的unittest模块。因为该框架是基于python自带的unittest,所以很多方法需要自己去定义,在过程中也遇到了许许多多的问题。该骗博客主要记录框架的主要结构和学习过程中所遇到的问题。

1.框架结构


    框架目录分为9层。下面来介绍一下每一层的作用:

  • config:配置文件层。主要存放 ini 类型的配置文件。配置文件主要用于配置:①浏览器对象;②初始访问地址。当然也可以在这里配置更多的属性。
  • framework:初始化层。用于读取配置文件,打开浏览器对象,访问初始地址。一些初始化的操作通常放在该层下。
  • log:日志文件层。存放生成的.log日志文件。
  • logs:日志层。用于存放编写日志类的层。
  • pageobjects:页面层。又称页面类,该层用于存放页面类元素。通常存放页面元素 id 之类的属性。然后通过重构的方法进行调用。
  • screenshots:图片层。用于存放生成的图片。
  • test_report:测试报告层。用于存放生成的HTML测试报告。
  • testsuits:实现层。用于实现测试用例。
  • unit:通用类。

2.实现方式    

在上面讲了该框架的目录结构。下面细说一下目录的 pageobjects 和 testsuits 两个类

    在看页面实现类之前,我们先看一下 unit 当中的 BasePage 类。因为该类主要对 Selenium 中的某些方法进行了二次封装,是一个很重要的类。后续如果需要进行对 Selenium 的方法的二次封装,大多数也在该类下进行的。【命名可随意】


    如上图所示,BasePage 将 Selenium 中的一些方法进行了二次方法,然后在进行使用。然后用于页面类进行继承调用。 这里就展示部分 BasePage 类的代码

    上面说到页面类是继承 BasePage 的类,且页面类用于存放页面元素的值。那么该类就显得很清晰了,就是调用父类的方法,然后将元素的 id 传入到父类当中,进行执行。下面举一个例子:


    可以看到,页面类中复写了 BasePage 中的文本输入方法,然后再次调用,将定义好的元素进行传入。这个就是通常的页面类的作用。用于作为中转层,提供数据和实现方法。但是方法的执行流程还是放在 BasePage 类当中。

    讲完了页面类 ,来说说实现类。


    实现类。使用 unittest 来执行测试用例。每个 def test_** 相当于一个测试用例的一点。该实现类下主要做的就是将封装好的页面类进行使用,然后返回查看结果。通常会配合 unittest 中的 TestSuite 进行批量测试,然后根据结果生成测试报告,并且发送邮件。

3.遇到问题

在编写的过程中当然也遇到了许多不同层次的问题,下面在这里记录一下。

1 . Message: stale element reference: element is not attached to the page document:消息:过时元素引用:元素不附加到页面文档。 主要是更换页面的时候,元素没有定位到或者为定位到的元素界面不存在该属性。

上述该问题需要特别注意:


    如当上述代码情况下,调用日志文件输入内容时。因为定义在 BasePage 类当中,是一个通用的方法。当时在某个时候进行了页面切换操作,定位到的元素不在具备 text 属性的时候,就会发生错误。

2. try except 执行问题。


当 try 中代码执行完毕时,如果还继续执行到了 except 当中,但是不执行其下的代码,那么证明 try 中的代码还存在问题。

3.pageobjects 页面类中。变量值重复定义问题。这个问题只需要注意一下就好,通常是自己粗心引起的。

    上述就是本次学习的大致了。本次学习 Python+Selenium+unittest 框架的感想颇深,学习的博客地址稍后贴出。原博主也对该小型测试框架后续的集成做出了一定的说法,类似于该框架的后续研究需要慢慢进行探索。

    代码下载地址:链接: https://pan.baidu.com/s/1Ri3zAbUddBZKcm86N96qHg 密码: i4vt

原学习博客地址:https://my.csdn.net/u011541946,建议大家有空去看该博主文章,写的非常细致到位。

  • 12
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值