python UI自动化(一)

前言:

一直以来都不是很想做UI自动化,原因:系统的稳定性差,UI界面经常变化等等。但是遇到接口又不稳定,还经常从接口写入的数据有误的而界面UI相对不是很复杂的情况下,UI自动化也是可以考虑的。比如最近在遇到一系统,研发明确的说不要用接口进行写入数据,要从界面上模拟用户真实的操作,其实也是可以理解的,前后端分离,好多控制什么的后端接口没有做处理,为了给用户快速的展示或是项目快速的完工,都让前端做了限制,这样更直观些。但如果遇到一个测试有多少条多少条数据时才怎么怎么样,出现什么样的结果。这时如果还是手动去执行真是要哭了。不让用接口,只能想到用简单的UI自动化了。所以就只好把放弃了好久的UI自动化知识重新拾起来啦。不啰嗦了,转入正题。

准备环境

现在UI自动化也有很多方法,我选择的是python+selenium+HTMLTestRunner
需要准备的是python环境。个人学习研究使用,所以开发工具使用的是破解pyCharm。安装破解在此就不多说了,网上有很多,待安装破解完成后弄个简单的实例进行测试一下。

需要安装chrome驱动浏览器,可以在“https://chromedriver.storage.googleapis.com/index.html”中找到当前自己电脑对应的版本下载。
如果是使用的是python3时,会遇到pip install HTMLTestRunner.html安装失败,因官网的是支持python2的,语法与python3不兼容,所以需要到官网http://tungwaiyip.info/software/HTMLTestRunner.html下载,下载后修改相应的内容后放入到python安装目录的lib下,即可。HTMLTestRunner.py 修改内容:

第94行,将import StringIO修改成import io
第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()
第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:
第631行,将print >> sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime))
第766行,将uo = o.decode(‘latin-1’)修改成uo = e
第772行,将ue = e.decode(‘latin-1’)修改成ue = e

实例:

import unittest
import time

import HTMLTestRunner
from selenium import webdriver

class MyTestCase(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome('E:\\0-auto\driver\\chromedriver.exe')  #手动指定chrome驱动程序路径
        self.driver.implicitly_wait(10)                                                      #设置隐式等待时间
        self.base_url = 'http://www.baidu.com'

    def test_search(self):
        u''' test search '''
        driver = self.driver
        driver.get(self.base_url)                                                            #打开网址
        driver.find_element_by_id('kw').send_keys(u'谷爱凌')                                  #定位输入框,输入搜索内容
        driver.find_element_by_id('su').click()                                              #定位按钮,并点击
        time.sleep(2)

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    with open('report_search.html','wb') as fp:                                              #当前路径下打开一个文件,用于报告写入
        runner = HTMLTestRunner.HTMLTestRunner(                                              #使用HTMLTestRunner生成报告
            stream=fp,
            title='report_search',
            description=u'running case:'
        )
        runner.run(MyTestCase('test_search'))

执行结果

python UI自动化(一)_第1张图片

你可能感兴趣的:(自动化,python,python,ui,自动化)