zoukankan      html  css  js  c++  java
  • Page Object设计模式(二)——poium测试库

    一、简介

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

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

      安装命令:pip install poium

     二、基本使用

      使用poium重写baidu_page.py

    1 from poium import Page, PageElement
    2 
    3 
    4 class BaiduPage(Page):
    5     """百度Page层,百度页面封装操作到的元素"""
    6     search_input = PageElement(id_="kw")
    7     search_button = PageElement(id_="su")

     测试用例中的使用如下:

     1 from selenium import webdriver
     2 import unittest
     3 from time import sleep
     4 from files.PO.baidu_page import BaiduPage
     5 
     6 
     7 class TestBaiduSearch(unittest.TestCase):
     8 
     9     @classmethod
    10     def setUpClass(cls):
    11         cls.driver = webdriver.Chrome()
    12         cls.base_url = "https://www.baidu.com"
    13 
    14     def test_baidu_search_case(self):
    15         page = BaiduPage(self.driver)
    16         page.get("https://www.baidu.com")
    17         page.search_input("selenium")
    18         page.search_button.click()
    19         sleep(2)
    20         self.assertEqual(page.get_title(), "selenium_百度搜索")
    21 
    22     @classmethod
    23     def tearDownClass(cls):
    24         cls.driver.quit()
    25 
    26 
    27 if __name__ == '__main__':
    28     unittest.main(verbosity=2)

    三、更多方法

    1.支持的定位方法

      八种定位方法:

     1 from poium import Page, PageElement
     2 
     3 
     4 class SomePage(Page):
     5     elem_id = PageElement(id_='id')
     6     elem_name = PageElement(name='name')
     7     elem_class = PageElement(class_name='class')
     8     elem_tag = PageElement(tag='input')
     9     elem_link_text = PageElement(link_text='this_is_link')
    10     elem_partial_link_text = PageElement(partial_link_text='is_link')
    11     elem_xpath = PageElement(xpath='//*[@id="kk"]')
    12     elem_css = PageElement(css='#id')

     2.设置元素超时时间

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

    1 from poium import PageElement, Page
    2 
    3 
    4 class BaiduPage(Page):
    5     search_input = PageElement(_id='kw', timeout=5)
    6     search_button = PageElement(_id='su',timeout=30)

     3.设置元素描述

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

     1 from poium import PageElement, Page
     2 
     3 
     4 class LoginPage(Page):
     5     """
     6     登录Page类
     7     """
     8     username = PageElement(css='#loginAccount', describe="用户名")
     9     password = PageElement(css='#loginPwd', describe="密码")
    10     login_button = PageElement(css='login_btn', describe="登录按钮")
    11     user_info = PageElement(css="a.nav_user_name > span", describe="用户信息")

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

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

  • 相关阅读:
    代码优化
    使用python的Flask实现一个RESTful API服务器端
    数据结构与算法之排序
    Ubuntu 13.04/12.10安装Oracle 11gR2图文教程(转)
    Linux 下开启ssh服务(转)
    PLSQL Developer 9.如何设置查询返回所有纪录(转)
    linux下安装oracle11g 64位最简客户端(转)
    Linux下关于解决JavaSwing中文乱码的情况(转)
    servlet(jsp)中的重定向和转发
    在用TabbarController中出现navigationController 嵌套报错
  • 原文地址:https://www.cnblogs.com/pegawayatstudying/p/12378349.html
Copyright © 2011-2022 走看看