zoukankan      html  css  js  c++  java
  • PO模式面试问题

    https://www.cnblogs.com/happy521/p/9146242.html

    PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性!

     

     

    主要分三层:

    1.基础层BasePage:封装一些最基础的selenium的原生的api方法,元素定位,框架跳转等。

    2.PO层:元素定位、获得元素对象,页面动作

    3.测试用例层:业务逻辑,数据驱动!

    三者的关系:PO层继承继承层,测试用例层调用PO层!

    复用性差UI元素的改变不需要修改业务逻辑代码。只需要找到对应的PO页修改定位即可,数据代码分离


     

     

    一:po的概念与思想

    po是page object的缩写,即页面对象。使用po是对页面进行抽象或者说建模的过程,需要把页面当作一个对象

    面向对象编程语言中,进行面向对象编程需要考虑以下两点:

    1:对象的属性(全局变量)

    2:对象的行为(函数)

    po思想也是一样,对页面进行抽象时,把页面的一个一个的web元素设计为页面对象的属性,把页面上的操作(如点击、输入等)设计为页面对象的行为

     

    二:po中元素的定位

    Selenium提供了许多注解和Api可以方便的定位元素和初始化元素,如下是腾讯课堂首页下拉选择机构图标的声明方式:

    1 @FindBy(css="i[class='icon-font i-v-bottom-small']")
    2 @CacheLookup 
    3 public WebElement select_icon; 

    三行代码释义:

    1、@FindBy(css="i[class='icon-font i-v-bottom-small']")

    指定了要元素的定位方式,如上表示以cssSelector方式进行定位,还有其他7种写法@FindBy(id="xxx")、@FindBy(name="xxx")...

    2、@CacheLookup 

    表示缓存查找到元素,重复使用可提高查询速度

    3、public WebElement select_icon;

    声明一个web元素类型的全局变量

     

    三:po中元素的初始化

    Po提供了 PageFactory.initElements()来初始化页面元素,把查找的元素赋值到我们定义的属性(全局变量)上面

    为了非常方便的进行页面元素的初始化,我们把该方法放置到页面类型的构造方法中,当调用该构造方法创建页面对象时,会调用该方法同时初始化页面的元素

    代码如下:

    1     public KeqqHomePage() {
    2             PageFactory.initElements(driver, this);
    3     }

    四:页面行为抽象

    元素初始化后,通过操作元素(如点击,输入)即可完成页面的功能,po中对页面功能的抽象,则提现为声明一个一个的对象方法

    如下是页面选择机构的行为的抽象:

    复制代码
    1     public void selectOrg(){
    2         //选择机构需要进行两步操作,首先点击下拉图标,然后点击机构选项,
    3 //两步操作写入到该方法,页面对象调用该对象方法,则可完成选择结构的行为
    4         select_icon.click();
    5         org_item.click();
    6     }
    复制代码

     

  • 相关阅读:
    常用基础命令
    Vim
    Linux目录结构
    稀疏数组
    数据结构概述
    天天用的命令
    Mysql和redis的安装
    回文排列
    URL化
    在word中做复选框打对勾钩
  • 原文地址:https://www.cnblogs.com/ht22ht22/p/13212912.html
Copyright © 2011-2022 走看看