2019-06-11:appium+pytest中,PageObject设计模式的使用

Appium Driver的封装

#coding=utf-8
from appium import webdriver
from appium.webdriver.webdriver import WebDriver

class AndroidClient(object):

    driver:WebDriver
    @classmethod
    def install_app(cls) -> WebDriver:
        caps = {}
        #如果有必要,进行第一次安装
        # caps["app"]=''
        caps["platformName"] = "android"
        caps["deviceName"] = "hogwarts"
        caps["appPackage"] = "com.xueqiu.android"
        caps["appActivity"] = ".view.WelcomeActivityAlias"
        #解决第一次启动的问题
        caps["autoGrantPermissions"] = "true"
        # caps['noReset']=True

        cls.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
        cls.driver.implicitly_wait(10)
        return cls.driver

    @classmethod
    def restart_app(cls) -> WebDriver:
        caps = {}

        caps["platformName"] = "android"
        caps["deviceName"] = "hogwarts"
        caps["appPackage"] = "com.xueqiu.android"
        caps["appActivity"] = ".view.WelcomeActivityAlias"
        #为了更快的启动,并保留之前的数据,从而可以保存上一个case执行后的状态
        caps['noReset']=True
        caps['chromedriverExecutableDir']="/Users/seveniruby/projects/chromedriver/2.20"
        #caps["udid"]="emulator-5554"

        cls.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
        cls.driver.implicitly_wait(10)
        return cls.driver

Page的封装

第一个page
#coding=utf-8
from appium import  webdriver
from appium.webdriver.webdriver import WebDriver
from page_object.driver.AndroidClient import AndroidClient
from page_object.page.SelectedPage import SelectedPage


class MainPage(object):

    #调用appium启动app
    def __init__(self):
        AndroidClient.restart_app()


    def gotoSelected(self):
        #调用全局的driver对象使用webdriver api操纵app
        AndroidClient.driver.implicitly_wait(100)
        AndroidClient.driver.find_element_by_xpath("//*[@text='自选']")
        AndroidClient.driver.find_element_by_xpath("//*[@text='自选']").click()
        return SelectedPage()
第二个page
#coding=utf-8
from page_object.driver.AndroidClient import AndroidClient


class SelectedPage(object):
    def addDefault(self):
        return self

    def getPriceByName(self, name) -> float:
        #todo:
        price=AndroidClient.driver\
            .find_element_by_xpath("//*[contains(@resource-id, 'stockName') and @text='"+name+"']"+
             "/../../..//*[contains(@resource-id, 'currentPrice')]").text
        return float(price)

测试case

#coding=utf-8
import pytest

from page_object.page.MainPage import MainPage


class TestSelected(object):
    def test_price(self):
        main=MainPage()
        assert main.gotoSelected().getPriceByName("科大讯飞")==29.58
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值