一、简介

  poium是一个基于Selenium/appium的Page Object测试库,最大的特点是简化了Page层元素的定义。

  项目地址:https://github.com/SeldomQA/poium

  安装命令:pip install poium

二、基本使用

  使用poium重写baidu_page.py

 from poium import Page, PageElement

 class BaiduPage(Page):
"""百度Page层,百度页面封装操作到的元素"""
search_input = PageElement(id_="kw")
search_button = PageElement(id_="su")

测试用例中的使用如下:

 from selenium import webdriver
import unittest
from time import sleep
from files.PO.baidu_page import BaiduPage class TestBaiduSearch(unittest.TestCase): @classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
cls.base_url = "https://www.baidu.com" def test_baidu_search_case(self):
page = BaiduPage(self.driver)
page.get("https://www.baidu.com")
page.search_input("selenium")
page.search_button.click()
sleep(2)
self.assertEqual(page.get_title(), "selenium_百度搜索") @classmethod
def tearDownClass(cls):
cls.driver.quit() if __name__ == '__main__':
unittest.main(verbosity=2)

三、更多方法

1.支持的定位方法

  八种定位方法:

 from poium import Page, PageElement

 class SomePage(Page):
elem_id = PageElement(id_='id')
elem_name = PageElement(name='name')
elem_class = PageElement(class_name='class')
elem_tag = PageElement(tag='input')
elem_link_text = PageElement(link_text='this_is_link')
elem_partial_link_text = PageElement(partial_link_text='is_link')
elem_xpath = PageElement(xpath='//*[@id="kk"]')
elem_css = PageElement(css='#id')

2.设置元素超时时间

  通过timeout参数可设置元素超时时间,默认为10s。

 from poium import PageElement, Page

 class BaiduPage(Page):
search_input = PageElement(_id='kw', timeout=5)
search_button = PageElement(_id='su',timeout=30)

3.设置元素描述

  当一个Page类中定义的元素非常多时,必须通过注释来增加可读性,这时可使用describe参数。

 from poium import PageElement, Page

 class LoginPage(Page):
"""
登录Page类
"""
username = PageElement(css='#loginAccount', describe="用户名")
password = PageElement(css='#loginPwd', describe="密码")
login_button = PageElement(css='login_btn', describe="登录按钮")
user_info = PageElement(css="a.nav_user_name > span", describe="用户信息")

  需要强调的是,describe参数并无实际意义,只是增加了元素定义的可读性。

  poium极大地简化了Page层的定义,除此之外,还提供了很多的API,如PageSelect类简化饿了下拉框的处理等。

Page Object设计模式(二)——poium测试库的更多相关文章

  1. poium测试库介绍

    poium测试库前身为selenium-page-objects测试库,我在以前的文章中也有介绍过:这可能是最简单的Page Object库,项目的核心是基于Page Objects实现元素定位的封装 ...

  2. Page Object 设计模式介绍

    Page Object 是 Selenium 自动化测试项目开发实践的最佳设计模式之一,Page Object 的主要体现于对界面交互细节的封装,这样可以使测试案例更关注与业务而非界面细节,提高测试案 ...

  3. Selenium+java - Page Object设计模式

    前言 Page Object(页面对象)模式,是Selenium实战中最为流行,并且被自动化测试同学所熟悉和推崇的一种设计模式之一.在设计测试时,把页面元素定位和元素操作方法按照页面抽象出来,分离成一 ...

  4. Selenium(十九):unittest单元测试框架(五) Page Object设计模式

    1. Page Object设计模式 Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,它主要体现在对界面交互细节的封装,这样可以使测试方案更关注于业务而非界面细节.从 ...

  5. Page Object设计模式(一)

    一.简介 主要特点体现在“对界面交互细节的封装”上,使测试用例更专注于业务的操作,从而提高测试用例的可维护性.解决UI变动问题. page对象的一个基本原则经验法则是:凡是人能做的事,page对象通过 ...

  6. Page Object设计模式实践

    Page Object模式是使用Selenium的广大同行最为公认的一种设计模式.在设计测试时,把元素和方法按照页面抽象出来,分离成一定的对象,然后再进行组织. Page Object模式,创建一个对 ...

  7. selenium+Python(Page Object 设计模式实例)

    以下实例演示了采用了page Object设计模式的方式登录qq空间: 1.创建基础类page:在初始方法__init__()定义驱动的(driver),基本url(base_url)和超时时间(ti ...

  8. Python+selenium之Page Object设计模式

    Page Object是selenium自动化测试项目开发实践的最佳设计模式之一,他主要提现在对界面交互细节的封装,这样可以使测试案例隔你给加关注于业务而非界面细节,从而提高测试案例的可读性. Pag ...

  9. web端自动化——selenium Page Object设计模式

    Page Object设计模式的优点如下: ①    减少代码的重复. ②    提高测试用例的可读性. ③    提高测试用例的可维护性,特别是针对UI频繁变化的项目. 当为Web页面编写测试时,需 ...

  10. Selenium 2自动化测试实战39(Page Object设计模式)

    Page Object设计模式 Page object是selenium自动化测试项目开发时间的最佳设计模式之一,主要体现在对界面交互细节的封装. 1.认识page object优点如下:1.减少代码 ...

随机推荐

  1. LUA提取免费迅雷账号

    --获取http://www.521xunlei.com/ 免费迅雷账号 function getPageid() local http = require("socket.http&quo ...

  2. VC获取cookies的几种方法

    方法一: CInternetSession::GetCookie This member function implements the behavior of the Win32 function  ...

  3. Android头像更换之详细操作

    Android开发之头像的更换(拍照,从手机照片中选择) 先说一下昨天未解决的问题:原因是自己在获取对象时,没有将新加的图片属性加到该对象里,导致一直爆空指针异常. 接下来分析一下头像更换的具体操作: ...

  4. 七、Application类

    前言:每个运行的WPF应用程序都由System.Windows.Application类的一个实例来表示.程序集资源(assemblyre sources)的每个资源是一块可嵌入到编译过得应用程序中的 ...

  5. 机器学习总结-sklearn参数解释

    本文转自:lytforgood 机器学习总结-sklearn参数解释 实验数据集选取: 1分类数据选取 load_iris 鸢尾花数据集 from sklearn.datasets import lo ...

  6. WeChall_Training: Programming 1 (Training, Coding)

    When you visit this link you receive a message.Submit the same message back to http://www.wechall.ne ...

  7. Zabbix监控实现跨区域跨网络监控数据

    Zabbix监控实现跨区域跨网络监控数据 环境: 公司现有服务器10台,其中5台服务器有一台安装了zabbix,并且这5台服务器处于一个网络,只有一台服务器有公网ip, 另外的5台处于另一个网络,仅有 ...

  8. 3D点云配准算法简述

    ​蝶恋花·槛菊愁烟兰泣露 槛菊愁烟兰泣露,罗幕轻寒,燕子双飞去. 明月不谙离恨苦,斜光到晓穿朱户. 昨夜西风凋碧树,独上高楼,望尽天涯路. 欲寄彩笺兼尺素.山长水阔知何处? --晏殊 导读: 3D点云 ...

  9. [redis读书笔记] 第一部分 数据结构与对象 简单动态字符串

    本读书笔记主要来自于<<redis设计与实现>> -- 黄键宏(huangz) redis主要设计了字符串,链表,字典,跳跃表,整数集合,压缩列表来做为基本的数据结构,实现键值 ...

  10. 学习CSS之用CSS实现时钟效果

    一.机械时钟 1.最终效果 用 CSS 绘制的机械时钟效果如下: HTML 中代码结构为: <body>     <div class="clock">   ...