学习笔记——测试进阶之路 学习笔记:PO 模式设计及代码应用 (下)
      大海
       ·
      2020年04月24日
      
       ·
      1461 次阅读
    
  
          「原创声明:保留所有权利,禁止转载」
        
      测试数据
- Appium Desktop V1.15.1
 - PyCharm Community 2019.2
 - 夜神模拟器 V6.6.0.2
 - 雪球股票 APK V12.4.6
 
PO 模式架构

PO 模式解析:
base 类:经常需要调用的元素定位方法
page 类:各个页面下的函数方法
testcase 类:各个测试用例集合
PO 模式代码
BASE 类
# !/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@File    : base.py
@Time    : 2020/02/22
"""
class Base():
    def __init__(self, driver):
        self.driver = driver
    def find_ID(self, ID):
        return self.driver.find_element_by_id(ID)
    def find_XPATH(self, XPATH):
        return self.driver.find_element_by_xpath(XPATH)
 PAGE 类
- main_page 页
 
# !/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@File    : main_page.py
@Time    : 2020/02/22
"""
from testPO5.base.base import Base
from testPO5.page.search_page import SearchPage
class MainPage(Base):
    textview = "//android.widget.TextView[@text='同意']"
    search_input_box = "com.xueqiu.android:id/tv_search"
    def click_search(self):
        self.find_XPATH(self.textview).click()
        self.find_ID(self.search_input_box).click()
        return SearchPage(self.driver)
 
- search_page 页
 
# !/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@File    : search_page.py
@Time    : 2020/02/22
"""
from testPO5.base.base import Base
class SearchPage(Base):
    search_input = "com.xueqiu.android:id/search_input_text"
    alibaba = "//android.widget.TextView[@text='阿里巴巴']"
    price = "com.xueqiu.android:id/current_price"
    add_me = "com.xueqiu.android:id/follow_btn"
    def input_search_box(self, search_key):
        self.find_ID(self.search_input).send_keys(search_key)
        return self
    def click_search_key(self):
        self.find_XPATH(self.alibaba).click()
        return self
    def get_price(self):
        current_price = float(self.find_ID(self.price).text)
        return current_price
    def addseleciton(self):
        self.find_ID(self.add_me).click()
        return self
 TestCases 类
# !/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@File    : search_cases.py
@Time    : 2020/02/22
"""
from appium import webdriver
from testPO5.page.main_page import MainPage
class TestSearchFunc():
    def setup(self):
        desire_cap = {}
        desire_cap['platformName'] = 'Android'
        desire_cap['platformVersion'] = '5.1.1'
        desire_cap['deviceName'] = 'emulator-5554'
        desire_cap['appPackage'] = 'com.xueqiu.android'
        desire_cap['appActivity'] = 'view.WelcomeActivityAlias'
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desire_cap)
        self.driver.implicitly_wait(10)
    def teardown(self):
        self.driver.quit()
    def test_search_01(self):
        mp = MainPage(self.driver)
        print(mp.click_search().input_search_box("alibaba").click_search_key().get_price())
    def test_search_02(self):
        mp = MainPage(self.driver)
        mp.click_search().input_search_box("alibaba").click_search_key().addseleciton()
 运行过程

测试结果

          TesterHome 为用户提供「保留所有权利,禁止转载」的选项。
          除非获得原作者的单独授权,任何第三方不得转载标注了「原创声明:保留所有权利,禁止转载」的内容,否则均视为侵权。
          具体请参见TesterHome 知识产权保护协议。
  
    如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
  
  
      暂无回复。