Appium+unittest+PageObject实例
实例中设计到的文件如下红色标出
[loggers] keys=root,infoLogger [logger_root] level=DEBUG handlers=consoleHandler,fileHandler [logger_infoLogger] handlers=consoleHandler,fileHandler qualname=infoLogger propagate=0 [handlers] keys=consoleHandler,fileHandler [handler_consoleHandler] class=StreamHandler level=INFO formatter=form02 args=(sys.stdout,) [handler_fileHandler] class=FileHandler level=INFO formatter=form01 args=('runlog_conf.log', 'a') [formatters] keys=form01,form02 [formatter_form01] format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s [formatter_form02] format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-07-04 17:17 # @File : baseView.py class BaseView(object): def __init__(self,driver): self.driver=driver def find_element(self,*loc): return self.driver.find_element(*loc)
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-07-04 17:22 # @Author : zhouyang # @File : commom_fun.py from appium_advance.page_object.desired_caps import appium_desired from appium_advance.page_object.baseView import BaseView from selenium.common.exceptions import NoSuchElementException import logging from selenium.webdriver.common.by import By class Commom(BaseView): cancelBtn=(By.ID,'android:id/button2') skipBtn=(By.ID,'com.tal.kaoyan:id/tv_skip') def check_cancleBtn(self): logging.info('===========check cancleBtn==========') try: cancelBtn = self.driver.find_element(*self.cancelBtn) except NoSuchElementException: logging.info('no cancelBtn') else: cancelBtn.click() def check_skipBtn(self): logging.info('===========check cancelBtn===========') try: skipBtn = self.driver.find_element(*self.skipBtn) except NoSuchElementException: logging.info('no cancelBtn') else: skipBtn.click() if __name__ == '__main__': driver=appium_desired() com=Commom(driver) com.check_cancleBtn() com.check_skipBtn()
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-07-03 11:05 # @Author : zhouyang # @File : capability_yaml.py ''' 从desired_caps.yaml文件中获取capability数据,登录考研帮app,把日志保存在文件中 ''' from selenium import webdriver import yaml import logging import logging.config file=open('../yaml/desired_caps.yaml','r') data=yaml.load(file) CON_LOG='../log/log.conf' logging.config.fileConfig(CON_LOG) logging=logging.getLogger() def appium_desired(): desired_caps = {} desired_caps['platformName'] = data['platformName'] desired_caps['platformVerion'] = data['platformVersion'] desired_caps['deviceName'] = data['deviceName'] desired_caps['app'] = data['app'] desired_caps['noReset'] = data['noReset'] desired_caps['appPackage'] = data['appPackage'] desired_caps['appActivity'] = data['appActivity'] desired_caps['unicodeKeyboard'] = data['unicodeKeyboard'] desired_caps['resetKeyboard'] = data['resetKeyboard'] logging.info('start info...') driver = webdriver.Remote('http://' + str(data['ip']) + ':' + str(data['port']) + '/wd/hub', desired_caps) driver.implicitly_wait(8) return driver if __name__ == '__main__': appium_desired()
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-07-05 11:42 # @Author : zhouyang # @File : loginView.py from appium_advance.page_object.desired_caps import appium_desired from appium_advance.page_object.commom_fun import Commom import logging from selenium.webdriver.common.by import By class LoginView(Commom): username_type=(By.ID,'com.tal.kaoyan:id/login_email_edittext') password_type=(By.ID,'com.tal.kaoyan:id/login_password_edittext') submit_type=(By.ID,'com.tal.kaoyan:id/login_login_btn') def login_action(self,username,password): self.check_cancleBtn() self.check_skipBtn() logging.info('=================login===================') logging.info('input username:%s'%username) self.driver.find_element(*self.username_type).send_keys(username) logging.info('input password:%s' %password) self.driver.find_element(*self.password_type).send_keys(password) logging.info('click loginBtn') self.driver.find_element(*self.submit_type).click() logging.info('===============login finish==============') if __name__ == '__main__': driver=appium_desired() l=LoginView(driver) l.login_action('自学网2018','zxw2018')
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-07-05 11:42 # @Author : zhouyang # @File : loginView.py from appium_advance.page_object.desired_caps import appium_desired from appium_advance.page_object.commom_fun import Commom import logging from selenium.webdriver.common.by import By class LoginView(Commom): username_type=(By.ID,'com.tal.kaoyan:id/login_email_edittext') password_type=(By.ID,'com.tal.kaoyan:id/login_password_edittext') submit_type=(By.ID,'com.tal.kaoyan:id/login_login_btn') def login_action(self,username,password): self.check_cancleBtn() self.check_skipBtn() logging.info('=================login===================') logging.info('input username:%s'%username) self.driver.find_element(*self.username_type).send_keys(username) logging.info('input password:%s' %password) self.driver.find_element(*self.password_type).send_keys(password) logging.info('click loginBtn') self.driver.find_element(*self.submit_type).click() logging.info('===============login finish==============') if __name__ == '__main__': driver=appium_desired() l=LoginView(driver) l.login_action('自学网2018','zxw2018')
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-07-05 16:18 # @Author : zhouyang # @File : myunit.py from appium_advance.page_object.desired_caps import appium_desired import logging import unittest from time import sleep class StartEnd(unittest.TestCase): def setUp(self): logging.info('===============setup==============') self.driver=appium_desired() def tearDown(self): logging.info('=============teardown============') sleep(5) self.driver.close_app()
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-07-05 16:24 # @Author : zhouyang # @File : test_login.py ''' unittest写的测试用例 ''' import unittest from appium_advance.unittest.myunit import StartEnd from appium_advance.page_object.loginView import LoginView import logging class Test_Login(StartEnd): def test_login_zxw2018(self): logging.info('=========test_login_zxw2018=========') l=LoginView(self.driver) l.login_action('自学网2018','zxw2018') def test_login_zxw2017(self): logging.info('=========test_login_zxw2017=========') l=LoginView(self.driver) l.login_action('自学网2017','zxw2017') def test_login_error(self): logging.info('=========test_login_error=========') l=LoginView(self.driver) l.login_action('123','456') if __name__ == '__main__': unittest.main()
platformName: Android platformVersion: 4.4.2 deviceName: 127.0.0.1:62001 app: C:\Users\Administrator\Desktop\kaoyan3.1.0.apk appPackage: com.tal.kaoyan appActivity: com.tal.kaoyan.ui.activity.SplashActivity noReset: False unicodeKeyboard: True resetKeyboard: True ip: 127.0.0.1 port: 4723