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

肇庆住房和城乡建设部网站合肥百度网站排名优化

肇庆住房和城乡建设部网站,合肥百度网站排名优化,百度网站建设费用怎么做账,wordpress左右主题今天#xff0c;我们来聊聊Web UI自动化测试中的POM设计模式。 为什么要用POM设计模式 前期#xff0c;我们学会了使用PythonSelenium编写Web UI自动化测试线性脚本 线性脚本#xff08;以快递100网站登录举栗#xff09;#xff1a; import timefrom selenium import …今天我们来聊聊Web UI自动化测试中的POM设计模式。 为什么要用POM设计模式 前期我们学会了使用PythonSelenium编写Web UI自动化测试线性脚本 线性脚本以快递100网站登录举栗 import timefrom selenium import webdriver from selenium.webdriver.common.by import Bydriver webdriver.Chrome()driver.get(https://sso.kuaidi100.com/sso/v2/authorize.do) driver.maximize_window() driver.find_element(By.ID, name).send_keys(***********) driver.find_element(By.ID, password).send_keys(***********) driver.find_element(By.ID, submit).click() time.sleep(2) text driver.find_element(By.PARTIAL_LINK_TEXT, 首页).text assert text 首页 driver.close()使用以上代码最基础最简单的Web UI 自动化测试就做起来了但是问题也随之而来线性脚本的缺点也暴露出来了 Web UI自动化测试简单来说就是模拟人在浏览器上的操作打开浏览器-定位元素-操作元素-模拟页面动作-断言结果由于线性脚本中的元素定位、元素操作细节、测试数据、结果验证断言是捆绑在一起的代码会显得非常冗余、可读性差、不可复用、工作量大且可维护性差 刚开始少数的测试用例维护起来可能很容易但随着时间迁移、产品迭代、测试套件持续增长脚本也越来越臃肿可能需要维护几十个页面且很多页面是公用的元素的任何改变都会让我们的脚本变的繁琐复杂、耗时易出错。例如十几个用例中都用到了A元素某一天A元素被前端改成了B元素我们就需要去十几个用到A元素的地方将A元素修改为B元素如果可以把公共元素抽取出来即使元素被前端修改我们也只需更新元素的定位方式而不用修改每条测试用例无论多少用例用到该元素都只需修改元素定位方式重新获取元素即可所以我们引入了PageObject这种解决方案它可以帮我们解决设计上的问题可以将testcase和page分层形成一个非常好的结果 什么是POM设计模式 POMPage Object Model页面对象模型的简称 2013年由Martin Fowler提出了PageObject的观点 作者的观点是一种封装思想旨在为每个待测页面创建一个页面对象从而将繁琐的定位操作、操作细节封装到这个页面对象中对外只提供必要的操作接口在调用的时候只调用提供的接口不用去调用操作细节最终实现程序的高内聚低耦合使程序模块的可重用性、移植性大大增强 在这种模式下对于应用程序中的每个页面都应该有相应单独的页面类例如login_page、userinfo_page类中应该包含此页面上的元素对象和操作这些元素对象所需要的方法 再将流程所关联的页面作为对象将对象串联起来形成不同的业务流程例如在登录页面完成登录操作后跳转到用户中心页面进行个人信息的修改 Selenium官方对PageObject的引入 历史 2015年Selenium官方对PageObject进行引入https://github.com/SeleniumHQ/selenium/wiki/PageObjects 2020年Selenium更新文档地址 https://www.selenium.dev/documentation/test_practices/encouraged/page_object_models PageObject六大原则 The public methods represent the services that the page offers 用公共方法表示页面提供的服务 例如登录页面有用户名输入框、密码输入框、登录按钮于是就可以用input_username()代表输入用户名、用input_password()代表输入密码、用click_submit()代表点击登录按钮 Try not to expose the internals of the page 尽量不要暴露页面的内部信息 将操作细节封装成方法对外只提供对应的方法供调用 Generally don’t make assertions 一般不使用断言 断言要和Page代码分开不要将断言写在PageObject层 Methods return other PageObjects 方法返回其他PageObjects 例如首页有个方法是点击登录图标跳转到登录页面因此这个方法应该返回login_page Need not represent an entire page 不需要表示整个页面 不需要对页面中的每一个元素进行建模只需要关注我们需要用到的元素。例如登录页面除了账号密码登录还有快捷登录、手机短信登录、扫码登录等 Different results for the same action are modelled as different methods 同一行为的不同结果可以用不同的方法来模拟 例如对一个页面进行操作可能出现正确的结果或者错误的结果可以为这两种不同的结果分别创建两个不同的方法 POM框架 basebase_page基类定义项目所需的基础方法对Selenium一些常用的api进行二次封装如find_element、click、send_keys、screenshot、调用JavaScript脚本的方法以及其他与浏览器相关的操作 为什么要有基类 由于每个页面都会频繁使用这些方法若单纯使用Selenium原始api可能遇到一些问题例如某个按钮未加载完成但已触发了点击事件导致元素定位不到而报错。这时就可以对原始api进行二次封装如加入等待时间、对异常进行捕获并打印日志等之后所有的PageObject都继承BasePage类后续只需要调用这些封装好的方法增强复用性 假设以后不使用Selenium这个框架就只需要修改BasePage中的方法不用去修改具体的测试用例业务代码 pagespage_object页面对象层也是PO的核心层继承BasePage管理页面元素以及操作元素的方法将操作元素的动作写成方法 cases测试用例层用于管理测试用例这里会用到单元测试框架如Pytest、Unittest。 data测试数据层用于测试数据的管理数据与脚本分离降低维护成本提高可移植性如yml 文件数据 config配置文件层存放整个项目需要用到的配置项如URL、数据库信息等 utilsCommonUtil公共模块将一些公共函数、方法以及通用操作进行封装如日志模块、yaml 操作模块、时间模块等 run.py批量执行测试用例的主程序根据不同需求不同场景进行组装遵循框架的灵活性和扩展性 logs日志模块用于记录和管理日志针对不同情况设置不同的日志级别方便定位问题 reports测试报告层用于测试报告的生成和管理如基于 Allure 生成的定制化报告 最后下方这份完整的软件测试视频学习教程已经整理上传完成朋友们如果需要可以自行免费领取 【保证100%免费】
http://www.hkea.cn/news/14592352/

相关文章:

  • 实搜网站建设深圳罗湖做网站的公司
  • 网站开发技术课程报告手机版网站公司的
  • 全国企业信息官网网站海报设计 网站
  • 做网站的研究生专业vscode网站开发
  • 怎么做网站啊检查目录遍历漏洞wordpress站点
  • 饶阳网站建设html项目模板下载
  • 如何用php做电商网站WordPress导航条之间得跳转
  • 山西住房建设厅网站湖州微网站建设
  • 酒店品牌网站建设推广wordpress高仿主题
  • 网站建设规划书怎么写营销网站建设公司有哪些
  • 网站管理助手3.0设计素材网站哪个最好免费
  • 青岛制作网站哪家公司好建站平台 做网站
  • 注册网站一年多少钱wordpress只能下载一个文件
  • 厦门上网站设计建设wordpress 微信
  • 服务周到的上海网站建设公老闵行小学排名
  • 网站建设技术方面平台网站建设需求
  • 做网站是如何实施的网站平台做推广
  • 在哪个网站做外快设计定制网站建设服务
  • 江苏网站seo平台湖北企业建站系统信息
  • 儿童 网站 设计wordpress购物主题
  • 网站空间要备案吗建筑模板公司
  • 不错的网站建设公seo的优化步骤
  • 怎么给公司免费做网站济南三合一网站建设
  • 网站死了怎么办做网站开发的是不是程序员
  • 利用免费网站做SEO建设银行悦生活网站
  • 上海缘魁网站建设做平面哪个网站的素材最好
  • 请问聊城网站建设邢台区域最新调整
  • 广州品牌型网站10m网站空间
  • 招聘网站销售怎么做网上下的网站模版后门
  • 深圳坂田做网站互联网销售平台