美文网首页
webUI自动化(python + unittest + HTM

webUI自动化(python + unittest + HTM

作者: 冬至阳生 | 来源:发表于2019-11-08 09:29 被阅读0次

    近期想自己参照网上资料用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 + HTM

          本文链接:https://www.haomeiwen.com/subject/aaxapctx.html