Appium+python自动化(四十)-Appium自动化测试框架综合实践 - 代码实现(超详解)
北京-宏哥 人气:11.简介
今天我们紧接着上一篇继续分享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 By class 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: pass else: 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 False else: logging.info('login success!') self.logout_action() return True def 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,NoSuchElementException class 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 False else: self.add_register_info() if self.check_register_status(): return True else: return False def 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 False else: logging.info('register success!') return True if __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.小结
好了,今天由于时间的关系就分享就到这里,宏哥这里着重实现了两个业务模块,其他业务模块你可以照猫画虎的就可以轻易地实现了。感谢您耐心的阅读!
加载全部内容