当前位置: 首页 > news >正文

滴滴网站建设流程图网站建设公司河南郑州

滴滴网站建设流程图,网站建设公司河南郑州,静态网页制作总结,做网站如何月入10万大家都知道po模式可以提高代码的可读性和减少了代码的重复,但是相对的缺点还有,今天通过本文一起学习下PO模式在selenium自动化测试框架的优势,需要的朋友可以参考下 PO模式简介 1.什么是PO模式 PO模型是:Page Object Model的简写 页面对象…

大家都知道po模式可以提高代码的可读性和减少了代码的重复,但是相对的缺点还有,今天通过本文一起学习下PO模式在selenium自动化测试框架的优势,需要的朋友可以参考下

PO模式简介

1.什么是PO模式

PO模型是:Page Object Model的简写 页面对象模型

作用:就是把测试页面和测试脚本进行分离,即把页面封装成类,供测试脚本进行调用;

分层机制,让不同层去做不同类型的事情,让代码结构清晰,增加复用性。

PO设计模式是Selenium自动化测试中最佳的设计模式之一,主要体现在对界面交互细节的封装

2. 不使用PO设计会出现以下几种情况:

复用性不太好,扩展性不好,易读性差,不好维护,UI界面频繁的项目维护起来比较麻烦。

3.PO模式的优缺点

优点:

  • 提高代码的可读性

  • 减少了代码的重复

  • 提高代码的可维护性,特别是针对UI界面频繁的项目

缺点:

造成项目结构比较复杂,因为是根据流程进行了模块化处理

下面重点看下PO模式在selenium自动化测试框架的优势。

PO模式是在UI自动化测试过程当中使用非常频繁的一种设计模式,使用这种模式后,可以有效的提升代码的复用能力,并且让自动化测试代码维护起来更加方便。

PO模式的全称叫page object model(POM),有时候叫做 page object pattern。最开始由马丁福勒提出,这个模式受到selenium自动化测试框架大力推广,因而成为一种非常主流的自动化测试设计模式。

在PO模式当中,每一个UI页面使用编程语言当中的类来表示。在这个类当中,通过函数形式定义页面的行为和操作。这让调用方不需要关注具体执行的操作到底是点击还是拖动,而是关注具体的业务,比如登录、购物等等,甚至如果程序员直接把代码给产品经理看,他也是能看懂的。

在这里插入图片描述

没有使用PO模式时

在测试用例中直接编写浏览器操作API,对于代码编写者并没有多高的难度,因为他自己已经对这些API非常熟悉,但是这些浏览器操作并不能体现业务,至少没有产品经理那么熟悉,因此他很难和产品经理进行沟通,也难和开发沟通,甚至在半个月之后,他已经忘记了自己到底写了什么东西。

def test_login_mail(self):driver = self.driverdriver.get("http://www.xxx.xxx.com")driver.find_element_by_id("idInput").clear()driver.find_element_by_id("xxxxxxx").send_keys("xxxxx")driver.find_element_by_id("xxxxxxx").clear()driver.find_element_by_id("xxxxxxx").send_keys("xxxxxx")driver.find_element_by_id("loginBtn").click()

使用PO模式

使用PO模式有利于梳理业务,也有利于和其他人进行沟通。当你把下面这段代码拿给产品经理看的时候,他也大概能知道你测的是什么业务,能帮你纠正你的测试流程是否正确,或者提出一些更有建设性的意见,这对于大型项目需要频繁沟通和梳理业务时非常有用。

def test_login_mail(self):LoginPage(driver).login()

而浏览器本身的操作,就会被分离到一个更底层的模块,这些代码你可以不对调用方暴露,产品经理并不关心你这个页面中什么元素定位,他也不懂。

class LoginPage:username_loc=(By.ID,"idInput")password_loc =(By.ID,"pwdInput")submit_loc =(By.ID,"loginBtn")span_loc=(By.CSS_SELECTOR,"div.error-tt>p")dynpw_loc =(By.ID,"lbDynPw")userid_loc =(By.ID,"spnUid")def __init__(self, driver):self.driver = driverdef login(self):self.driver.find_element(*self.username_loc).clear()self.driver.find_element(*self.username_loc).send_keys("xxxxx")self.driver.find_element(*self.password_loc).clear()self.driver.find_element(*self.password_loc).send_keys("xxxxxx")self.driver.find_element(*self.submit_loc).click()

这种方式把元素定位方式也分离了。但是这种元素定位的表达式可读性也不是很强,可以换用 property 方式来表示元素,所有的元素统一放在一起,修改起来也比较方便。

class LoginPage:def __init__(self, driver)self.driver = driver@propertydef username_element(self):return self.driver.find_element('id', 'idInput')def password_element(self):return self.driver.find_element('id', 'pwdInput')def submit_element(self):return self.driver.find_element('id', 'loginBtn')def login(self, name, password):self.username_element.send_keys(name)self.password_element.send_keys(password)self.submit_element.click()

第三种方式可以充分利用Python的描述符特性,你会发现很多序列化库或者ORM框架都有类似的用法。

class LoginPage:def __init__(self, driver)self.driver = driverusername = Element(css='#idInput', desc='用户名输入框')password = Element(css='#pwdInput', desc='密码输入框')confirm = Element(css='#loginBtn', desc='登录确认按钮')def login(self, name, password):self.username.send_keys(name)self.password.send_keys(password)self.confirm.click()

而 Element 类可以通过 Python 描述符实现,这里为了方便,只定义了xpath的元素定位方法:

class Element:def __init__(self,xpath=None,desc=''):self.xpath = xpathself.desc = descdef __get__(self, instance, owner):driver = instance.browserel = driver.find_element('xpath', self.xpath)return el

PO模式和DDD

PO模式是DDD(领域驱动设计)的一个简单实现,但是还不够彻底。如果要在自动化测试中贯彻DDD,我觉得还有一些可以优化的空间。

首先某一个业务不一定只是单个页面的操作,比如登录不一定只涉及到LoginPage这个页面,因此直接在LoginPage中编写login函数就不是很合理。对于调用方来说,应该明确说明的是谁在登录,而不是指某个页面。像这样:

user.login()
# or
login(user)

我们编写的代码就像是自然语言,任何懂英语的人都知道代码在做什么,在DDD中,叫做领域特定语言(DSL), 要实现这种逻辑,在Page类和调用中间应该还会有一个层级来封装user。

其次,Page页面会依赖更底层的资源,比如组件,元素类型。因此在 Page 类的下方应该会使用 InputElement, ButtonElement 、SelectElement 这样的元素类和 HeaderComponent、FooterComponent 这样的组件类。

 class LoginPage:username_filed = InputElement('xxx')password_filed = PasswordElement('xxx')

领域驱动设计对于大型项目梳理业务、同步业务、沟通业务是非常有帮助的,是一种以业务为中心的设计范式。PO模式对于DDD的小范围应用,以及具体了足够多的好处:

  • 便于维护。每一个页面的操作都被单独的存放在一个类文件中,当前端页面

    被修改之后,只需要找到对应类文件进行修改,其他的代码并不需要进行修改,这符合单一职责原则。

  • 便于重复使用。在进行自动化测试的时候,一个测试由多个测试步骤组成,

    这些测试步骤可能涉及到多个页面的操作。而用例与用例之间的操作可能重合。PO模式可以重复利用这些测试步骤,简化代码的编写。

  • 提高了可读性。页面的操作都被以函数的形式封装起来了。函数名就具备注

    释的作用,其他人阅读代码时可以通过函数了解业务。

到此这篇关于PO模式在selenium自动化测试框架有什么好处的文章就介绍到这了。


最后

如果你想学习自动化测试,那么下面这套视频应该会帮到你很多

如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....

最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了!


以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

​​

​​​​

http://www.yayakq.cn/news/122311/

相关文章:

  • 网站建设游戏公司南宁网站建设-中国互联
  • 网站怎么做站群女装网站欣赏
  • 苏州建设企业网站百度竞价点击神器奔奔
  • 江苏建设工程招标网官方网站东莞做网站建设公司
  • 搭建个人网站的两种方法一般做网站用什么软件
  • 校园电子商务是什么沈阳专业网站seo推广
  • 营销型网站建设亏1wordpress 主题 博客 广告位
  • 燃气行业网站建设方案昌吉做网站
  • 网站建立快捷方式系统搭建流程
  • 电子商务网站有哪些功能河南郑州网站推广优化外包
  • 潮流印花图案设计网站杭州精品网站建设
  • 怎么在网站上做按钮网页音频提取工具
  • 什么网站可以做报名系统公司如何做网络营销
  • 品牌做网站公司培训行业seo整站优化
  • 网站 主机学校网站建设必要性
  • 网站制作公司北京wordpress 后台 添加菜单
  • 建设电影网站论文空调网站模版
  • 专门做土特产的网站开发一个小程序一般需要多少钱呢
  • 南宁购物网站建设大千科技网站建设
  • 北京网站建设技术部鹤壁建设网站
  • 网站上百度要怎么做wordpress error log
  • 建设医院网站ppt模板公司网站怎么做站外链接
  • 商城模板建站价格关于网站开发的外文翻译
  • 果洛州wap网站建设公司长沙创意网站建设
  • 枣庄住房和城乡建设厅网站为什么要做一个营销型网站
  • 怎样做编辑发到网站内容营销
  • 博客网站做外贸可以吗无锡网络推广服务
  • 怀化建设网站搜索引擎优化的英文缩写
  • 湘潭网站推广做网站买什么服务器吗
  • 海尔电子商务网站建设预算重庆网站建设企业