po模式

 Base类 公共类
 base.py 封装公共方法 get_driver.py设备信息

from selenium.webdriver.support.wait import WebDriverWait
class Base():
    def __init__(self,driver):
        self.driver=driver
    # 封装查找元素的方法 真正目的是给以下方法使用  点击、输入
    def base_find_element(self,loc,timeout=30,poll=0.5):
        return WebDriverWait(self.driver,timeout=timeout,poll_frequency=poll).until(lambda x:x.find_element(*loc))
    # 封装点击方法
    def base_click_element(self,loc):
        self.base_find_element(loc).click()
    # 封装输入方法
    def base_input_text(self,loc,text):
        self.base_find_element(loc).send_keys(text)
    # 封装截图方法
    def base_get_img(self):
        self.driver.get_screenshot_as_file("../Image/img01.png")
from appium import webdriver
def get_driver():
    # server 启动参数
    desired_caps = {}
    # 设备信息
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '5.1'
    desired_caps['deviceName'] = '192.168.56.101:5555'
    # 设置中文
    desired_caps['unicodeKeyboard']=True
    desired_caps['resetKeyboard']=True
    # app的信息
    desired_caps['appPackage'] = 'com.android.settings'
    desired_caps['appActivity'] = '.Settings'

    # 声明我们的driver对象
    return webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

page类 页面类
page_setting.py 私有方法 继承Base类 调用Base类方法

from selenium.webdriver.common.by import By
from Base.base import Base
"""
    以下定位数据,我们临时先放到这里
"""
# 搜索按钮id
search_btn = By.ID, "com.android.settings:id/search"
input_search=By.ID,"android:id/search_src_text"
back_btn=By.CLASS_NAME,"android.widget.ImageButton"

class PageSetting(Base):
    # 点击搜索按钮 方法封装
    def page_click_search_btn(self):
        # 调用base类点击元素方法
        self.base_click_element(search_btn)
    # 输入 方法封装
    def page_input_text(self,text):
        self.base_input_text(input_search,text)
    # 点击搜索框返回按钮
    def page_click_back_btn(self):
        self.base_click_element(back_btn)

Scripts类 执行测试类
test_setting.py 调用page类方法

import sys, os

sys.path.append(os.getcwd())
from Page.page_setting import PageSetting
from Base.get_driver import get_driver


class TestSetting():
    def setup(self):
        # 获取driver
        self.driver = get_driver()
        # 实例化setting页面对象
        self.setting = PageSetting(self.driver)

    def teardown(self):
        # 关闭driver驱动对象
        self.driver.quit()

    # 执行测试方法
    def test_setting(self):
        # 点击搜索按钮
        self.setting.page_click_search_btn()
        # 输入搜索内容
        self.setting.page_input_text("wlan")
        # 点击返回按钮
        self.setting.page_click_back_btn()

pytest.ini 配置文件

[pytest]
addopts= -s --html=./Report/report.html --reruns 1
testpaths=./Scripts
python_files=test_setting.py
python_classes=Test*
python_functions=test*

猜你喜欢

转载自blog.csdn.net/cyy19920319/article/details/82961666