当前位置: 首页 > news >正文

Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)

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.小结

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

http://www.lryc.cn/news/390740.html

相关文章:

  • 防止跨站脚本攻击XSS之Antisamy
  • Python爬虫实战案例——王者荣耀皮肤抓取
  • PyTorch计算机视觉实战:目标检测、图像处理与深度学习
  • 4D 生物打印:将时间维度融入,打造个性化动态组织
  • 银行清算业务功能测试解析
  • CVE-2024-6387漏洞预警:尽快升级OpenSSH
  • 学习整理在php中使用PHPExcel读取excel表列数大于Z时读取不到的解决方案
  • python sklearn机械学习-数据预处理
  • 搜索引擎常用语法
  • 华为智能驾驶方案剖析
  • DDR3(一)
  • Eureka与Spring Cloud Bus的协同:打造智能服务发现新篇章
  • Kafka入门到精通(三)-Kafka
  • 高校教师教学质量评估系统-计算机毕业设计源码03344
  • 币界网讯,预计以太坊现货 ETF 将于 7 月中旬推出
  • 【FFmpeg】avio_open2函数
  • 技术成神之路:设计模式(二)建造者模式
  • 基于Springboot+Vue+mysql仓库管理系统仓库进销存管理系统
  • 爬虫scrapy库精简使用大全
  • Qt - 如何在新线程 (QThread)中使用一个进程 (QProcess)?
  • Qt绘制多线段
  • 去中心化革命:探索区块链技术的前沿
  • 2024年湖南省各市科小申报时间(科技型中小企业申报流程、条件、好处)新政
  • 【JD-GUI】MacOS 中使用Java反编译工具JD-GUI
  • C++:求梯形面积
  • 学会python——在excel中写入数据(python实例十三)
  • Stable Diffusion【基础篇】:降噪强度(denoising strength)
  • 【Python】语法入门
  • 匠心独运:红酒与手工艺的很好结合
  • 第20章 Mac+VSCode配置C++环境