POM简介、POM优势、如何设计POM

POM简介

Page Object Model (POM) 直译为“页面对象模型”,这种设计模式旨在为每个待测试的页面创建一个页面对象(class),将那些繁琐的定位操作封装到这个页面对象中,只对外提供必要的操作接口,是一种封装思想。

POM是什么

页面根据系统或者模块来管理

例如:xx系统或模块,涉及到哪几个页面

元素根据页面来进行管理

例如:测试xx页面,需要用到哪些元素

POM的优势

为什么要使用POM

少数的自动化测试用例维护起来看起来是很容易的。但随着时间的迁移,测试套件将持续的增长。脚本也将变得越来越臃肿庞大。如果变成我们需要维护10个页面,100个页面,甚至1000个呢?而且页面元素很多是公用的。那页面元素的任何改变都会让我们的脚本维护变得繁琐复杂,而且变得耗时易出错。

POM好处有哪些?

让UI自动化更早介入项目中,可项目开发完再进行元素定位的适配与调试

POM 将页面元素定位和业务操作流程分开,分离了测试对象和测试脚本.

如果UI页面元素更改,测试脚本不需要更改,只需要更改页面对象中的某些代码就可以

POM能让我们的测试代码变得可读性更好,高可维护性,高复用性,

可多人共同维护开发脚本,利于团队协作

如何设计POM

页面对象模型(POM)是一种设计模式,用来管理维护一组web元素集的对象库

在POM下,被测项目的每一个页面都有一个对应的page class

每一个page class维护着该web页的元素定位集和

每一个page class维护着该web页的操作这些元素的方法

login_page.py 文件,作用是管理登录页面的元素

common.py文件,作用是封装一些常用的方法,比如等待,发送信息等

TestCase测试用例

一个项目有两个pom_Python Selenium设计模式之POM设计模式相关推荐

  1. vue项目跨域的问题(一个项目对接两个不同的域名、端口接口导致跨域,最好的办法是后端解决)

    vue项目跨域的问题前端解决方法(一个项目对接两个不同的域名.端口接口导致跨域,最好的办法是后端解决) 前端解决方法: ①打开config文件---->index.js文件,找到 proxyTa ...

  2. 一个项目有两个pom_实现一个Spring Boot Starter超简单,读 Starter 源码也不在话下...

    Spring Boot 对比 Spring MVC 最大的优点就是使用简单,约定大于配置.不会像之前用 Spring MVC 的时候,时不时被 xml 配置文件搞的晕头转向,冷不防还因为 xml 配置 ...

  3. 一个项目中两台西门子S7-1500CPU之间的TCP通信组态

    西门子S7-1500 与 S7-1500 之间的以太网通信可以通过 TCP 或 ISO on TCP 协议来实现,使用的通信指令是在双方 CPU 调用 T-block (TSEND_C, TRCV_C ...

  4. 项目经理怎么在两周内熟悉一个项目的业务?

    项目经理空降到一个进行中的项目,怎么在两周内熟悉一个项目的业务? 四步帮你解决:明确项目业务目标,了解系统功能模块,弄清系统核心业务流程,多使用系统. 一.明确项目业务目标 明确项目业务目标,也就是了 ...

  5. 一个网卡配置两个不同网段的IP地址(比如应用道闸项目)

    1. 一个网卡配置两个不同网段的IP地址(比如应用道闸项目) 近期做的项目中,应用到了道闸,需要获取到道闸的车辆进出实时信息,但是道闸是配的自己的局域网,连接道闸的PC也只有一个网卡,所以常规操作是不 ...

  6. 太恐怖了 两天搞定一个项目 Java Web MVC 网络商城教程+源代码

    两天搞定一个项目 Java Web MVC 网络商城教程+源代码 最近自学做了一个网络商城将以下是代码和教程 环境搭建–数据库设计–页面设计-后台设计 本项目使用的jdk版本是 运行项目前需要先配置好 ...

  7. 一个项目中不能同时出现两个main函数

    在写两个短程序的时候想着把两个cpp文件放到同一个项目中比较省空间,然后就出现了下面的问题:main函数已经定义过,然后将项目中的一个含有main函数的cpp文件删除之后再运行,可以运行 原因大概是m ...

  8. 在C++中同一个项目下两个.cpp文件中都用到main函数时,C++编译器会进行如下提示1.LNK2005_main 已经在 写文件.obj 2.LNK1169 找到一个多个多重定义的符号。

    本文在参考嘞一下博主的文章后进行了一个问题与答案的汇总. 学习C++过程中 出现了error LNK2005: _main 已经在 源.obj 中定义 原因:当前工程里定义了两个main()主函数,在 ...

  9. 2021-03-03:一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。给你每一个项目开始的时间和结束的时间 。你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。 返回最多的宣讲场次。

    2021-03-03:一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲.给你每一个项目开始的时间和结束的时间 .你来安排宣讲的日程,要求会议室进行的宣讲的场次最多. 返回最多的宣讲场次. ...

最新文章

  1. 难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型...
  2. 优秀!一鼓作气学会“一致性哈希”,就靠这 18 张图了
  3. 和封神一起“深挖”Spark
  4. 德赛西威与智驾科技MAXIEYE发布“九逵计划”,部署商用车自动驾驶技术及服务...
  5. 各种好用的代码生成器
  6. 基于环信sdk的陌生人交友php服务器代码开源
  7. ResourceManager里面Trackingui需要手动该ip
  8. java项目命令编译,打包,运行
  9. c语言 更新学生信息,求学生信息管理系统C语言版
  10. Java面向对象之多态(向上、向下转型) 入门实例
  11. 豆瓣评分8.0以上数据分析R、MySQL、Python等书籍,45本包邮送到家
  12. 在win7物理机,使用vmware,3台centos7系统,分别部署httpd,php-fpm,mariadb
  13. si4745 FM-AM-SW 音量控制芯片 驱动详解
  14. SOFTICE 初使用
  15. php 并列排名,MySQL并列排名和顺序排名查询
  16. Python进行Excel数据统计
  17. 华为手机开发人员选项哪里去了
  18. R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型
  19. 用JAVA代码利用坐标构造三角形、椭圆、直线并求其周长、面积
  20. VISTA或WIN7下使用立体声混音作为录音来源时,如何通过编程方式去除或加入麦克风的输入

热门文章

  1. deepin Linux vscode 配置C++环境
  2. [转帖]公司内网机器病毒
  3. 新年第一篇!西南民族大学第十届校赛(同步赛)
  4. 《像计算机科学家一样思考Python》pdf
  5. matlab矩阵内存预分配
  6. 性能测试--siege
  7. 《十天学会单片机和C语言编程》
  8. uva 714 Copying Books
  9. Java中ArrayList类的用法
  10. sharepoint SPFolder的使用