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 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.小结
好了,今天由于时间的关系就分享就到这里,宏哥这里着重实现了两个业务模块,其他业务模块你可以照猫画虎的就可以轻易地实现了。感谢您耐心的阅读!