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

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

  • 33
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Appium是一个用于自动化移动应用程序的开源工具,而Python是一种流行的编程语言,可以使用AppiumPython实现移动应用程序的自动化测试。 连接模拟器并启动淘宝App的步骤如下: 1. 首先,需要安装AppiumPython的相关环境,包括Node.js、npm、Appium Server、PythonAppium Python客户端库。 2.打开Android模拟器,确保模拟器已经启动。 3.导入所需的Python库,包括webdriver、MobileBy和AppiumWebElement。 4.设置Appium连接参数,包括设备名称、平台版本、App路径和包名。 5.通过Appium Python客户端库中的webdriver.Remote()方法建立与Appium Server的连接。 6.使用find_element()方法找到并点击启动淘宝App的按钮。 7.等待淘宝App启动完成。 完整的Python代码示例如下: ```python from appium import webdriver from appium.webdriver.common.mobileby import MobileBy from appium.webdriver.webelement import WebElement desired_caps = { 'platformName': 'Android', 'platformVersion': '10', 'deviceName': 'emulator-5554', 'appPackage': 'com.taobao.taobao', 'appActivity': 'com.taobao.tao.homepage.MainActivity3' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) button = driver.find_element(MobileBy.XPATH, '//android.widget.Button[@text="淘宝"]') button.click() # 等待淘宝App启动完成 driver.implicitly_wait(10) driver.quit() ``` 请注意,上述代码中的设备名称、平台版本、App路径和包名需要根据实际情况进行修改。 以上就是使用AppiumPython连接模拟器并启动淘宝App的详细步骤和示例代码。通过这种方式,可以进行移动应用程序的自动化测试和操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值