webUI自动化(python + unittest + HTMLTestRunner + page objects)实战踩坑记录

近期想自己参照网上资料用selenium搭建一下UI自动化项目。期望达到的效果是:数据,元素,业务逻辑分离,并生成测试报告。这里记录下,整个过程中遇到的问题和解决办法。

前期:环境安装搭建可以参照:https://blog.csdn.net/TestingGDR/article/details/81950593

接下来创建项目,项目结构如图:

项目结构

简单介绍下结构层级和作用,

commonbase:存放公用方法,和较底层的实现

config:存放配置文件,目前配置文件仅配置driver和测试地址。(后续考虑如何实现非手动修改配置而是动态读取配置)

pages:存放被测页面的控件定位和封装简单的测试动作

testcase:存放测试用例

data:存放测试数据,考虑读取excle,但是这个方法不好,此文件夹可以不要

log:存放运行log

report:存放生成的测试报告

screenshots:存放报错后的截图信息


问题记录:

问题:1:遇到无法呼起浏览器

解决方法:executable_path 需要直接指定出来,这个程序才能吊起浏览器

self.driver = webdriver.Chrome(executable_path ='C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')

问题2:

try: XXXXXX

except NoSuchElementException,e:XXXXX   会报错

解决办法:NoSuchElementException 改为Exception 即可

问题3:AttributeError: 'testLogin' object has no attribute 'driver'

解决办法:需要在testLogin类里定义一下driver。我在类全局变量处加入driver =None,在setUpClass里加入testLogin().__init__()

问题3解决方法

问题4:使用unittest框架,执行时,未执行setUpClass,setUp,以及testcase,仅仅执行了main。

解决办法:必须在类内引入unittest,类名后的()内加入unittest.TestCase即可。

问题4解决方法

问题5:basepage完成后,我简单实现了下登录页面的测试case,同时基于pageObject的思想,对loginpage页面元素封装。遇到了一个问题一直找不页面元素,参照文档也正确使用了定位器,但是依旧找不到元素,后经高人指导,页面类继承基础类了,可以不使用定位器来指定根据什么找元素,直接传递元素id即可,如图。


问题5的解决办法

问题6:在使用testcase调用browser类的方法时,报错:AttributeError: 'browser' object has no attribute 'driver',排查N久后,发现在browser类的open_browser方法中,实例化出来的driver是个私有变量,导致其他方法,如quit_browser不能使用。最后通过定义全局变量解决。


问题6的解决方法

问题7:当我在框架中加入生成测试报告的部分时,发现不通过IDE,通过命令的方式来执行时。遇到找不到Section的问题,报错:configparser.NoSectionError: No section: 'browserType'

网络解释:configparser在python2.7和python3上要使用绝对路径,或者使用linux路径,我这里使用了linux的路径解决了,如图

问题7的解决方法

问题8:遇到web页面的弹窗,使用chrom的工具识别,无法抓取到,导致后续用例无法执行

解决办法:增加以下代码解决

alert =self.driver.switch_to.alert

alert.accept()


至此:在考虑数据驱动和测试报告生成时,被安利了pytest单元测试框架,然后被它众多的插件吸引,因此在此框架基础上,替换pytest框架,当然pytest时兼容unittest用例的执行的,但是由于我这边case不多,所以就直接替换了。也省去了后面解决兼容性的一些问题。替换后大致组成如下:

python+pytest+page objects。

目录修改如图:

貌似也没啥大变化,去除了data,加了pytest的三方插件

好吧,下面再看一篇文章,来记录下在网上挣扎着自学pytest测试框架的历程吧


参考文档:

https://blog.csdn.net/TestingGDR/article/details/81950593

https://blog.csdn.net/sinat_34817187/article/details/82018099

你可能感兴趣的:(webUI自动化(python + unittest + HTMLTestRunner + page objects)实战踩坑记录)