Python+selenium自动化公共逻辑步骤封装

开篇



个人博客“Python+selenium的GUI自动化实现”提到的chrome与IE浏览器调用插件已上传至51CTO下载,对应链接分别为:chrome,http://down.51cto.com/data/2171584;IE,http://down.51cto.com/data/2171585;有需要的直接下载即可;

 正文



关于自动化,其实质就是用机器操作代替手工执行,从而减少人力投入、节约项目运营成功。优秀的自动化框架,可能的一个发展过程,前期自动化用例写作实现过程,可能需要有一定的人力投入,在用例成型之后,投入的维护人员,就需要相应的精简,如果投入与维护人员依旧高居不下,这样的自动化基本可以废弃掉,由此引申出优秀的自动化框架这个概念。

再谈优秀的自动化框架概念之前,啰嗦一下关于自动化的实现思想:

1.对于所要实现的业务,有一定的熟悉与了解,或者可以根据文本用例,做自动化用例轻松实现,也就是说,做自动化,需要基于一定的业务基础,也就是熟悉业务;

2.第二点就是,脚本与数据分离,这一点涉及到自动化用例维护人员投入这一块,好的自动化用例,一旦实现脚本与数据分离之后,维护人员只需基于不同的场景要求维护自动化数据部分即可,相应的自动化脚本部分无需过多维护,其最终目的就是减少人员投入;

3.自动化用例是针对GUI的用例设计,需要用例实现人员与维护人员有一定的元素定位技能,也就是xpath,正如生活中如何区分张三和李四一样,元素定位就是去区分输入框与按钮等元素空间,从而确定针对哪个控件做何种操作;

4.优秀的自动化矿建,要求简单易用,减少用例实现人员与维护人员学习周期,能够很快投入项目自动化中来,其实质就是减少人力投入,自动化框架做的越傻瓜越好;

Python+selenium自动化优化-公共逻辑步骤封装



此处只对Python+selenium中的点击与输入实现做代码封装实现,具体如下:

#encoding=utf-8
#针对Python中用到的selenium公共方法做封装
class Webdriver:
    def click(self,webdriver=‘driver‘,method=‘Id‘,path=‘‘):
        ‘method value have name/id/xpath/class;webdriver is the driver you use‘
        if path==‘‘:
            print ‘you must input the xpath‘
        else:
            if method==‘Id‘ or method==‘id‘:#根据控件元素的ID属性定位元素,速度最快
                print ‘the method you useing is Id‘
                elem=webdriver.find_element_by_id(path)
                elem.click()
            elif method==‘name‘ or method==‘Name‘:#根据控件元素的name属性定位元素,速度次之
                elem=webdriver.find_element_by_name(path)
                elem.click()
            elif method==‘class‘ or method==‘Class‘:#根据控件元素的class属性定位元素,速度稍慢
                elem=webdriver.find_element_by_class_name(path)
                elem.click()
            elif method==‘xpath‘ or method==‘Xpath‘:#通过xpath方式定位元素,速度最慢
                elem=webdriver.find_element_by_xpath(path)
                elem.click()
    def text_input(self,webdriver=‘driver‘,method=‘Id‘,path=‘‘,key=‘‘):
        ‘method value have name/id/xpath/class;webdriver is the driver you use‘
        if path==‘‘:
            print ‘you must input the xpath‘
        else:
            if method==‘Id‘ or method==‘id‘:#根据控件元素的ID属性定位元素,速度最快
                print ‘the method you useing is Id‘
                elem=webdriver.find_element_by_id(path)
                elem.clear()
                elem.send_keys(key)
            elif method==‘name‘ or method==‘Name‘:#根据控件元素的name属性定位元素,速度次之
                elem=webdriver.find_element_by_name(path)
                elem.clear()
                elem.send_keys(key)
            elif method==‘class‘ or method==‘Class‘:#根据控件元素的class属性定位元素,速度稍慢
                elem=webdriver.find_element_by_class_name(path)
                elem.clear()
                elem.send_keys(key)
            elif method==‘xpath‘ or method==‘Xpath‘:#通过xpath方式定位元素,速度最慢
                elem=webdriver.find_element_by_xpath(path)
                elem.clear()
                elem.send_keys(key)

调用



>>> import sys
>>> sys.path.append(‘E:\Develop\Python‘)        #笔者封装文件存放路径
>>> import HelloWebdriver        #笔者封装文件名
>>> explore=HelloWebdriver.Webdriver()    #公共逻辑步骤实现类实例化
>>> explore.text_input(webdriver=driver,method=‘class‘,path=‘js_uname‘,key=‘123456‘) #封装类方法调用

通过上面的代码,可以发现,针对公共逻辑步骤做封装之后,可以减少代码的冗余,自动化用例中只需调用公共方法,减少了代码维护成本,且易于维护;

优化:

1.针对公共逻辑步骤做封装,可以针对元素控件做存在性与否的断言操作,通过断言实现正宗的自动化,如果控件不存在,直接断言失败,用例停止运行,如果控件存在,不做断言失败,用例正常运行,从而完美实现自动化;

2.封装做完美优化,封装的公共逻辑方法能够满足不同场景业务要求,例如英文输入或者汉语输入等不同编码方式,做到封装方法的健壮性;

3.图形化,针对自动化公共方法可以做图形化实现,成为一种控件,用例写作人员只需拖动控件存放于自动化用例集中即可;

时间: 2024-10-26 03:51:01

Python+selenium自动化公共逻辑步骤封装的相关文章

如何写好Python+Selenium自动化?

哈喽,各位客官好,今天我给大家讲讲如何使用Python+Selenium做自动化测试,楼主在做开发测试之前做得java开发,由于种种原因,楼主转成了开发测试,接着又自学了脚本语言linux和python,对于这两门脚本,我是非常的喜欢,为什么呢,因为用起来效率太高了,所以楼主弃java转python,至于为什么,不做多解释,你懂得.接下来我将给各位讲讲如何用python+selenium自动化 1,什么是selenium selenium是一个开源的自动化测试框架,主要适用WEB测试,可以支持多

python+selenium自动化环境搭建之后,能打开firefox,却不能执行自动化操作

python+selenium自动化环境搭建之后,选择执行,能够打开firefox,但是却不能继续执行后续操作.原因是selenium的版本与firefox的版本不兼容. 解决办法: 1.将firefox降到与selenium相对应的版本.例如我使用selenium版本是3.3.3,那我对应的firefox版本是52.0.2,如果firefox继续升级,也会出现不兼容的情况.建议可以在firefox的工具--选项--高级中设置为不检查更新,以免软件自动更新出现问题. 2.安装该浏览器版本对应的g

python + selenium自动化环境常见问题小结

python + selenium自动化环境常见问题小结 (1)操作Windows窗口有三种方法,一是使用AutoIT软件生成exe程序,再用系统命令调用:二是使用SendKeys类模拟键盘操作(只能定位当前的焦点):三是使用pywinauto组件(win32gui) (2)pywinauto包只支持到python2.6版本.SendKeys包在python3.0版本上也无法安装成功. (3)执行完用例进行断言校验时,一般会获取元素的text属性,有时候在页面上查看元素有text值,而获取的为空

Python+Selenium自动化模拟用户登录(备注:记录一次强行卸载rpm依赖包,引发的rpm、yum等命令异常,无法远程xftp工具)

近期在摸索Python+Selenium自动化,实现模拟用户登录搜索等操作,反馈相关日志,再交由Zabbix分析,监控页面访问是否正常. 期间需要对Linux火狐浏览器进行升级,由于生产环境为内网环境,无法使用yum进行升级.本想在外网环境下使用Docker进行安装,然后打成镜像后迁移到内网环境.但由于系统为Red Hat 6.4对Docker支持较差,故在外网将相关依赖包下载后进行安装. 外网环境下,下载Firefox及相关依赖组件相关操作.         1.更新本地yum源为阿里yum源

python+selenium自动化环境配置及使用实例

一.搭建环境相关地址以及相关模块下载地址 1.#各个浏览器驱动下载地址: https://www.cnblogs.com/nancyzhu/p/8589764.html 2.#sublime+python+selenium自动化配置教程: http://python.tedu.cn/know/289803.html 3.#html测试报告: https://github.com/defnngj/HTMLTestRunner         http://www.testpub.cn/t/213

python selenium自动化屏蔽chrome“正受到自动化测试软件的控制”、“开发者模式”、“保存密码提示”

python selenium自动化屏蔽chrome“正受到自动化测试软件的控制”.“开发者模式”.“保存密码提示” from selenium import webdriver option = webdriver.ChromeOptions() #屏蔽自动化受控提示 && 开发者提示 option.add_experimental_option("excludeSwitches", ['enable-automation', 'load-extension']) #

Python +selenium自动化环境的搭建

Python +selenium+googledriver 小白的血泪安装使,不停的总结写心得是理解透彻的毕竟之路 一,python的安装: 首先去Python的官网下载安装包:https://www.python.org/ 2.下载完成后如下图所示 3.双击exe文件进行安装,如下图,并按照圈中区域进行设置,切记要勾选打钩的框,然后再点击Customize installation进入到下一步: 4.对于上图中,可以通过Browse进行自定义安装路径,也可以直接点击Install进行安装,点击

python+selenium自动化软件测试(第4章):场景判断与封装

4.1 显示等待WebDriverWait 前言:在脚本中加入太多的sleep后会影响脚本的执行速度,虽然implicitly_wait()这种隐式等待在一定程度上节省了很多时间.但是一旦页面上某些js无法加载出来(其实界面元素已经出来了),左上角那个图标一直转圈,这时候会一直等待的.一.参数解释1.这里主要有三个参数:class WebDriverWait(object):driver, timeout, poll_frequency2.driver:返回浏览器的一个实例,这个不用多说3.ti

生成HTMLTestRunner测试报告的操作步骤——Python+selenium自动化

HTMLTestRunner是Python标准库的unittest模块的一个扩展,具体操作如下 1.安装 环境:Window8 步骤:1)http://tungwaiyip.info/software/HTMLTestRunner.html下载HTMLTestRunner.py文件2)因为我使用的是python 3,所以在HTMLTestRunner.py文件中要做一下修改,修改内容如下: 修改一: 在python shell里输入>>>import HTMLTestRunner >