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
相关文章推荐
- 学习pytest的第九天-----使用自定义的标签分类执行测试+三种生成报告的方式
- Appium 并发多进程基于 Pytest框架
- 学习pytest的第三天-----fixture的使用方式+参数介绍
- 学习pytest的第八天-----xfail的使用
- 关于flask 上直接使用py.test测试框架进行测试
- python使用 HTMLTestRunner.py生成测试报告
- 全面超越Appium,使用Airtest超快速开发App爬虫
- python使用pytest+pytest报告
- Python 使用 HTMLTestRunner.py 生成测试报告
- 使用 py.test 对 python 代码进行测试
- 使用pytest+requests进行接口测试实践——测试get请求
- 使用pytest+requests进行接口测试实践——测试post请求
- appium+python学习笔记之使用HTMLTestRunner.py生成测试报告
- 使用sys模块,编辑test.py
- 学习pytest的第十二天-----使用allure2生成测试报告
- Python之使用unittest框架和HTMLTestRunner.py文件实现多个测试用例执行与测试报告生成
- python自动化测试(四)pytest的使用
- 使用 HTMLTestRunner.py 修改为Python3版本
- 使用 HTMLTestRunner.py
- [翻译]pytest测试框架(二):使用