找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
多测师成都校区_刘sir 21:07:54
UI自动化开展过程
当时我们是用python加selenium 做的ui自动化。 为了后期的方便管理,我们的代码都是使用分层的思想实现的。
在pycham中新建项目,然后在项目中建了6个模块,分别的公共模块,元素模块,流程模块,用例模块,执行用例模块,
报告模块。我们在公共模块封装一些关键字,在最底层的元素包里编写线性代码,例如登录来说,  输入账号和密码点击登录。
find_element_by_id(xxxx).send_keys('账号'),find_element_by_id(xxxx).send_keys('密码'),find_element_by_id(xxx).click( )。  
然后在流程模块中封装这些线性代码成一个登录的流程,并在用例模块调用封装的函数来实现用例的编写。因为执行速度太快 为了防
止页面元素加载不到,我们一般会用implicitly_waiting(20)来进行隐性等待。然后我们会将用例放在unittest框架内来执行,首先导入
selenium库和unittest框架,新建一个类继承unittest.testcase 根据webdriver.chrome()创建一个实例对象driver,再用这个对象
driver.get(url)来获取网页打开。我们一般吧用例的前置条件放在setup 的这个方法中,表示在此模块中每执行一次用例就要执行一次
setup这个结构里的方法。用例执行完成的时候有一个方法的结束叫做teardown()在这里设定driver.close()就会每执行完一次用例都
会将浏览器关闭。然后使用unittest.main( )执行这个以上代码以test开头的用例。
也可以使用discover=unittest.deafultTestLoader.discover (test_dir,pattern='lesson*.py' )查找以lesson开头的py文件,
并导入HTMLTestRunnerCN模块,使用HTMLTestRunnerCN.HTMLTestRunner定义一个runner对象,编写好steam、title(报告标题)、
description(用例执行详情)、tester(测试人员),用runner(discover)的方法来执行就会生成报告。


那我给你讲下我上个项目的自动化开展过程吧,我上个项目是叫掌中财富,是一个借贷平台。我们主要是对
我要出借、我要借款、我的账户等模块进行了自动化测试。我们公司采用的是Python结合selenium进行自动化测试的,
使用的是unittest框架。那为了方便后期对用例的管理和维护,我会进行模块的分层处理。主要分为:公共模块
(主要是写入一些经常要用到的函数,比如登录)、数据模块、报告模块、执行用例的模块以及编写用例模块。那接下来我就以
“我要出借”流程为例跟你讲解一下吧。
首先要导入对应的库,from selenium import webdriver和import unittest,分别导入selenium库和unittest库,
然后新建一个继承unittest.testcase类的我要出借的类,我一般会把需要的前置条件在setup结构中编写,
像webdrvier.chrome()选择谷歌浏览器,然后用dr.get方式获取网址打开,为了避免页面元素被遮挡定位不到而报错的现象,
我会用maximize_window将浏览器最大化处理。因为有时候用例执行太快,而网页加载太慢会导致报错,所以我一般都会用
implicitly_wait进行智能等待,确保页面加载完成后再执行下一步。
那在进行我要出借之前,需要先进行登录,因为之前我已经将登录写到公共模块了,所以我这边直接调用就可以了。登录成功后,
进入首页会弹出一个存管账户,它是一个iframe弹框,我们可以直接叉掉他,或者进行注册,因为后续要进行出借的功能,
必须要开通第三方存管账户才能完成。所以首先我们用switch_to_frame进入弹框,然后用id定位,并用send_keys编写里面的内容,
最后用switch_to_default_content退出iframe弹框完成注册。

之后的话是进行‘我要出借’,我要出借是一个隐藏列表,所以要先导入对应的模块,
from selenium.webdriver.common.action_chains import ActionChains,用find_element_by_id的方式定位我要出借,
然后用actionchains(dr).move_to_element().perform把鼠标移动到隐藏列表中,最后用xpath定位选择我要出借里面的一个标的。
就以新手标为例,进入到新手标页面之后,里面有很多出借的项目,那我们可以用find_element_by_name点击其中一个具体的项目进行出借。因为这里新开了一个的窗口,所以需要用到dr.switch_to_window去切换窗口才能进行下一步。切换窗口的话有两种方式,一种是通过句柄切换,一种是通过索引切换,我一般用索引切换窗口比较多也比较方便。这时候为了保证用例执行的准确性,我会进行断言,首先dr.title获取title信息,之后用if语句来判断获取到的title信息是否与实际的相符,如果不一致输出原因,并用dr.get_screenshot_as_file('e:\\bieyao\\error.png')进行截图。一致的话则执行下一步操作。然后用id定位方式出借金额,为了提高效率,我是之前已经写好了随机生成金额的关键字,所以我这边直接调用就可以了。最后用link_test定位点击立即出借就完成了整个出借的过程。在还原环境teardown的时候用dr.quit()将浏览器关闭,进行扫尾工作。

最后就是在执行模块执行用例并生成测试报告,首先需要导入生成报告所需的模块HTMLTestRunnerCN,用unittest.defaultTestLoader.discover(test_dir,pattern='
kj2.py')方法把当前文件所有test开头的用例集合在一起,然后定义好报告的保存路径,用HTMLTestRunnerCN.HTMLTestRunner把steam、title(报告标题)、description(用例执行详情)、tester(测试人员)等进行编写,最后用run的方法运行,执行完成之后可以在你保存的路径下,找到生成的报告进行总结分析。以上就是我大概的一个自动化开展过程。


分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册