您的位置:首页 > 移动开发 > Objective-C

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

2019-06-11 17:01 3611 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: