1.简介
今天我们紧接着上一篇继续分享Appium自动化测试框架综合实践 - 代码实现。由于时间的关系,宏哥这里用代码给小伙伴演示两个模块:注册和登录。
2.业务模块封装
因为现在各种APP的层出不群,各式各样的。但是其大多数都有注册、登录。为了不要使小伙伴卡在入门处,所以宏哥在这里仅仅是给你打一个样,俗话说:师傅领进门修行靠个人。剩下的就靠童鞋们自己实现和学习了
2.1登录页面业务逻辑模块
思路:
1、首先定义封装一个登录类的视图
2、然后继承公共类的定位方法,定位账号和密码的输入框
3、在类中,定义登录APP的方法
4、在类中,定义登录APP检查账户的方法
5、在类中,定义检查登录APP登录状态的方法
2.1.1loginView.py
2.1.2参考代码
# coding=utf-8 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行# 2.注释:包括记录创建时间,创建人,项目名称。 ''' Created on 2019-11-18 @author: 北京-宏哥 QQ交流群:707699217 Project:Appium自动化测试框架综合实践 - 代码实现 ''' # 3.导入模块 import logging from kyb_testProject.common.common_fun import Common,NoSuchElementException from kyb_testProject.common.desired_caps import appium_desired from selenium.webdriver.common.by import Byclass LoginView(Common):username_type=(By.ID,'com.tal.kaoyan:id/login_email_edittext')password_type=(By.ID,'com.tal.kaoyan:id/login_password_edittext')loginBtn=(By.ID,'com.tal.kaoyan:id/login_login_btn')tip_commit=(By.ID,'com.tal.kaoyan:id/tip_commit')button_mysefl=(By.ID,'com.tal.kaoyan:id/mainactivity_button_mysefl')username=(By.ID,'com.tal.kaoyan:id/activity_usercenter_username')RightButton=(By.ID,'com.tal.kaoyan:id/myapptitle_RightButton_textview')logoutBtn=(By.ID,'com.tal.kaoyan:id/setting_logout_text')def login_action(self,username,password):self.check_cancelBtn()self.check_skipBtn()logging.info('============login_action==============')logging.info('username is:%s' %username)self.driver.find_element(*self.username_type).send_keys(username)logging.info('password is:%s'%password)self.driver.find_element(*self.password_type).send_keys(password)logging.info('click loginBtn')self.driver.find_element(*self.loginBtn).click()logging.info('login finished!')def check_account_alert(self):logging.info('=====check_account_alert====')try:element=self.driver.find_element(*self.tip_commit)except NoSuchElementException:passelse:logging.info('close tip_commit')element.click()def check_loginStatus(self):logging.info('====check_loginStatus======')self.check_market_ad()self.check_account_alert()try:self.driver.find_element(*self.button_mysefl).click()self.driver.find_element(*self.username)except NoSuchElementException:logging.error('login Fail!')self.getScreenShot('login fail')return Falseelse:logging.info('login success!')self.logout_action()return Truedef logout_action(self):logging.info('=====logout_action======')self.driver.find_element(*self.RightButton).click()self.driver.find_element(*self.logoutBtn).click()self.driver.find_element(*self.tip_commit).click()if __name__ == '__main__':driver=appium_desired()l=LoginView(driver)l.login_action('bjhg2019','bjhg2019')# l.login_action('bjhg2018','34454')l.check_loginStatus()
2.2注册页面业务逻辑封装
思路:
1、首先定义封装一个注册类的视图
2、然后继承公共类的定位方法,定位账号和密码等其他的输入框
3、在类中,定义注册APP的注册状态的方法
4、在类中,定义添加注册APP信息的方法
2.2.1registerView.py
2.2.2参考代码
# coding=utf-8 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行# 2.注释:包括记录创建时间,创建人,项目名称。 ''' Created on 2019-11-18 @author: 北京-宏哥 QQ交流群:707699217 Project:Appium自动化测试框架综合实践 - 代码实现 ''' # 3.导入模块 import logging,random from kyb_testProject.common.desired_caps import appium_desired from kyb_testProject.common.common_fun import Common,By,NoSuchElementExceptionclass RegisterView(Common):register_text=(By.ID,'com.tal.kaoyan:id/login_register_text')#头像设置相关元素userheader=(By.ID,'com.tal.kaoyan:id/activity_register_userheader')item_image=(By.ID,'com.tal.kaoyan:id/item_image')save=(By.ID,'com.tal.kaoyan:id/save')#用户名密码邮箱相关元素register_username= (By.ID, 'com.tal.kaoyan:id/activity_register_username_edittext')register_password= (By.ID, 'com.tal.kaoyan:id/activity_register_password_edittext')register_email= (By.ID, 'com.tal.kaoyan:id/activity_register_email_edittext')register_btn= (By.ID, 'com.tal.kaoyan:id/activity_register_register_btn')#完善资料界面元素perfectinfomation_school = (By.ID, 'com.tal.kaoyan:id/perfectinfomation_edit_school_name')perfectinfomation_major = (By.ID, 'com.tal.kaoyan:id/activity_perfectinfomation_major')perfectinfomation_goBtn = (By.ID, 'com.tal.kaoyan:id/activity_perfectinfomation_goBtn')#院校相关元素forum_title = (By.ID, 'com.tal.kaoyan:id/more_forum_title')university = (By.ID, 'com.tal.kaoyan:id/university_search_item_name')#专业相关元素major_subject_title = (By.ID, 'com.tal.kaoyan:id/major_subject_title')major_group_title = (By.ID, 'com.tal.kaoyan:id/major_group_title')major_search_item_name = (By.ID, 'com.tal.kaoyan:id/major_search_item_name')#用户中心相关元素button_mysefl = (By.ID, 'com.tal.kaoyan:id/mainactivity_button_mysefl')username = (By.ID, 'com.tal.kaoyan:id/activity_usercenter_username')def register_action(self,register_username,register_password,register_email):self.check_cancelBtn()self.check_skipBtn()logging.info('======register_action======')self.driver.find_element(*self.register_text).click()logging.info('set userhead')self.driver.find_element(*self.userheader).click()self.driver.find_elements(*self.item_image)[10].click()self.driver.find_element(*self.save).click()logging.info('username is %s'%register_username)self.driver.find_element(*self.register_username).send_keys(register_username)logging.info('password is %s' % register_password)self.driver.find_element(*self.register_password).send_keys(register_password)logging.info('email is %s' % register_email)self.driver.find_element(*self.register_email).send_keys(register_email)self.driver.find_element(*self.register_btn).click()try:self.driver.find_element(*self.perfectinfomation_school)except NoSuchElementException:logging.error('register fail !')self.getScreenShot('register fail')return Falseelse:self.add_register_info()if self.check_register_status():return Trueelse:return Falsedef add_register_info(self):logging.info('======add_register_info=====')logging.info('select school...')self.driver.find_element(*self.perfectinfomation_school).click()self.find_elements(*self.forum_title)[1].click()self.find_elements(*self.university)[1].click()logging.info('select major...')self.driver.find_element(*self.perfectinfomation_major).click()self.driver.find_elements(*self.major_subject_title)[1].click()self.driver.find_elements(*self.major_group_title)[2].click()self.driver.find_elements(*self.major_search_item_name)[1].click()self.driver.find_element(*self.perfectinfomation_goBtn).click()def check_register_status(self):logging.info('=====check_register_status=====')self.check_market_ad()try:self.driver.find_element(*self.button_mysefl).click()self.driver.find_element(*self.username)except NoSuchElementException:logging.error('register fail!')self.getScreenShot('register fail')return Falseelse:logging.info('register success!')return Trueif __name__ == '__main__':driver=appium_desired()register=RegisterView(driver)username = 'bjhg2019' + 'fly' + str(random.randint(1000, 9000))password = 'bjhg2019' + str(random.randint(1000, 9000))email = 'bjhg' + str(random.randint(1000, 9000)) + '@163.com'register.register_action(username,password,email)
3.小结
好了,今天由于时间的关系就分享就到这里,宏哥这里着重实现了两个业务模块,其他业务模块你可以照猫画虎的就可以轻易地实现了。感谢您耐心的阅读!