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类简化饿了下拉框的处理等。

  • 相关阅读:
    Azure 虚拟机安全加固整理
    AzureARM 使用 powershell 扩容系统磁盘大小
    Azure Linux 云主机使用Root超级用户登录
    Open edX 配置 O365 SMTP
    powershell 根据错误GUID查寻错误详情
    azure 创建redhat镜像帮助
    Azure Powershell blob中指定的vhd创建虚拟机
    Azure Powershell 获取可用镜像 PublisherName,Offer,Skus,Version
    Power BI 连接到 Azure 账单,自动生成报表,可刷新
    Azure powershell 获取 vmSize 可用列表的命令
  • 原文地址:https://www.cnblogs.com/pegawayatstudying/p/12378349.html
Copyright © 2011-2022 走看看