Appium自动化框架从0到1之 业务模块封装(登录页面业务操作)

2023-11-13

我们这次来封装登录页面业务操作:
在上代码之前,我们先了解一下登录场景

用户名 密码
小鱼1号 fish1
小鱼2号 fish2
小鱼3号 fish3

然后,我们在登录的时候,会进行一下几个操作:
①我们先输入账号、密码,点击 登录按钮
②登录后,验证是否有下线提醒,
③登录后,验证是否登录成功
④退出登录

跟着这几步,我们来写代码:

loginView.py

# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-7-9
"""

import logging
from public.common_func import Common,By
from public.desired_caps import appium_desired
from selenium.common.exceptions import NoSuchElementException

class LoginView(Common):

    #登录界面元素设置
    username_input = (By.ID,'com.tal.kaoyan:id/login_email_edittext')
    password_input = (By.ID,'com.tal.kaoyan:id/login_password_edittext')
    login_btn = (By.ID,'com.tal.kaoyan:id/login_login_btn')

    #个人中心下线警告提醒确定按钮
    commitBtn = (By.ID,'com.tal.kaoyan:id/tip_commit')

    #个人中心元素
    myself_btn= (By.ID,'com.tal.kaoyan:id/mainactivity_button_mysefl')
    usercenter_name = (By.ID,'com.tal.kaoyan:id/activity_usercenter_username')

    #退出相关设置
    setting_btn = (By.ID,'com.tal.kaoyan:id/myapptitle_RightButtonWraper')
    logout_btn = (By.ID,'com.tal.kaoyan:id/setting_logout_text')
    tip_commit = (By.ID,'com.tal.kaoyan:id/tip_commit')

    def login_action(self,username,password):
        '''
        页面登录操作:
        输入用户名
        输入密码信息
        点击登录按钮
        '''
        #如果有更新,或者skip按钮,则直接点击
        self.check_upgradeBtn()
        self.check_skipBtn()
        # 登录
        logging.info('=======login_action=========')
        #在用户名输入框输入信息
        logging.info('username is %s' %username)
        self.driver.find_element(*self.username_input).send_keys(username)
        #在密码输入框输入信息
        logging.info('password is %s' %password)
        self.driver.find_element(*self.password_input).send_keys(password)
        #点击登录按钮
        logging.info('click login Button')
        self.driver.find_element(*self.login_btn).click()
        logging.info("login Finished !")

    def check_account_alert(self):
        '''
        检测账户登录后是否有账户下线提示
        :return:
        '''
        logging.info('=======check_account_alert=======')
        try:
            element = self.driver.find_element(*self.commitBtn)
        except NoSuchElementException:
            pass
        else:
            logging.info('click commitBtn')
            element.click()

    def check_loginStatus(self):
        '''
        检测登录状态,即验证是否登录成功状态
        :return:
        '''
        logging.info('======check_loginStatus=====')
        #如果有广告界面,直接点击关闭按钮
        self.check_market_ad()
        #如果有账号下线提醒,直接点击确定按钮
        self.check_account_alert()

        #使用try...except,在登录后页面获取任意一个元素,如果获取到,则表示登录成功,否则,登录失败
        try:
            self.driver.find_element(*self.myself_btn).click()
            self.driver.find_element(*self.usercenter_name)
        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):
        '''
        退出登录
        :return:
        '''
        logging.info('=======logout_action========')
        self.driver.find_element(*self.setting_btn).click()
        self.driver.find_element(*self.logout_btn).click()
        self.driver.find_element(*self.tip_commit).click()



if __name__ == '__main__':
    driver = appium_desired()
    l=LoginView(driver)
    l.login_action('小鱼1号','fish1')
    l.check_loginStatus()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Appium自动化框架从0到1之 业务模块封装(登录页面业务操作) 的相关文章

随机推荐

  • pagehelper使用方法及参数说明

    pagehelper使用方法及参数说明 使用方法 Override public PageInfo
  • spring源码--10--IOC高级特性--autowiring实现原理

    spring源码 10 IOC高级特性 autowiring实现原理 1 Spring IoC容器提供了2种方式 管理Bean的依赖关系 1 1 显式管理 通过BeanDefinition的属性值和构造方法实现Bean依赖关系管理 1 2
  • vue学习笔记:在vscode中使用@提示路径

    在vscode中输入 后如果可以智能提示路径 可以有效防止路径名称输入错误 减少不必要的麻烦 效果如下图所示 安装 Path Autocomplete 插件后可以实现路径的智能提示 步骤如下 1 在vscode中查找Path Autocom
  • 关于shell运行python文件中的错误——shell脚本换行

    问题 https ask csdn net questions 7900411 spm 1001 2014 3001 5505 问题由来 由于工程需要在本地window中写 当需要比较少的算力时在本地跑 当需要比较大的算力时就需要在auto
  • K8S调用GPU资源配置指南

    06 09 K8S调用GPU资源配置指南 时间 版本号 修改描述 修改人 2022年6月9日15 33 12 V0 1 新建K8S调用GPU资源配置指南 编写了Nvidia驱动安装过程 2022年6月10日11 16 52 V0 2 添加K
  • 基于pytorch的手势识别

    本次实验主要是使用pytorch完成手势识别 网络包含两个隐藏层 第一层隐藏层有576个节点 第二层隐藏层有144个节点 输入784个节点 图片大小为28 28 输出10个节点 10种手势 目录 1 数据集处理 2 神经网络的建立 3 神经
  • 利用ajax添加到购物车代码,Woocommerce添加到购物车链接Ajax在其他帖子或页面中启用...

    要在自定义添加到购物车按钮中启用ajax 至少有3种方法 A simple HTML Ajax add to cart link Add to cart Using Woocommerce existing add to cart id 1
  • Axios 入门教程

    Axios Get Post 别名方式 Get Post Axios 引入 axios 的 js 文件 使用 axios 发送请求 并获取响应结果axios method get url then function resp alert r
  • 【NOIP2012】开车旅行(倍增)

    题面 Description 小A 和小B决定利用假期外出旅行 他们将想去的城市从1到N 编号 且编号较小的城市在编号较大的城市的西边 已知各个城市的海拔高度互不相同 记城市 i的海拔高度为Hi 城市 i 和城市 j 之间的距离 d i j
  • var、let、const的区别

    var let const的区别 大体区别 const定义的变量不可以修改 而且必须初始化 var定义的变量可以修改 如果不初始化会输出undefined 不会报错 var定义的变量没有块的概念 可以跨酷爱访问 不能跨函数访问 let是块级
  • 【华为OD机试真题】投篮大赛(C++&java&python)100%通过率 超详细代码注释 代码优化

    华为OD机试真题 2022 2023 真题目录 点这里 华为OD机试真题 信号发射和接收 试读 点这里 华为OD机试真题 租车骑绿道 试读 点这里 投篮大赛 知识点字符串 时间限制 1s空间限制 256MB限定语言 不限 题目描述 你现在是
  • dbnet训练_1215

    https blog csdn net hhhhhhhhhhwwwwwwwwww article details 123904386 ops request misc 257B 2522request 255Fid 2522 253A 25
  • java使用jdbc操作数据库

    一 概述 为了持久化 方便管理数据 出现了mysql sqlserver等多种数据库 我们可以直接这些数据库中使用sql语言增删改查管理数据 但是对于业务人员来说不懂sql 没法通过sql直接在数据库操作 所以我们要通过程序提供对数据库的操
  • 用Qt实现QQ好友列表界面伸缩功能(完全一模一样)(伸展和收缩、抽屉效果、类似树形控件)(鼠标划过QSS效果)

    本文主要总结用Qt的自定义按钮和QWidget界面实现QQ好友列表的界面伸展和收缩功能 以及鼠标滑过 鼠标单击的QSS样式表效果 全文分为两大部分 分别是原理讲解和效果实现 抽缩界面效果图 源代码下载地址 https download cs
  • 增量测试:自顶向下测试&自底向上测试

    本博客主要内容 自顶向下测试和自底向上测试的优缺点 软件开发周期流程 不同的测试方法针对不同的测试阶段 一 自顶向下测试 优点 1 如果主要的缺陷发生在程序的顶层将非常有利 2 一旦引入I O功能 提交测试或更容易 3 早期的程序框架可以进
  • VS2013,MFC,在视图类里添加鼠标左键响应函数OnLButtonDown

    以CVoronoi2D为例子 点击类视图的View 右击选择类向导 选择WM LBUTTONDOWN 鼠标左击响应函数 然后点击添加处理程序 代码会自动生成一个响应函数 如图 如果对您有帮助 可以评论一下 谢谢
  • 失败的人生图片_人到中年,做事失败了,很可能是遇到了以下五种情况

    人至中年 也到了迈入成功大门的时刻 但并非每个人都能在中年获得成功 相反 有不少人却在中年的时候失败 人至中年面临失败 其实原因有很多 但大多数情况下 可能是遇到了以下五种情况 究竟有哪五种情况呢 如果您想知道 就让小编来为您揭秘 本文所有
  • hash与map的区别联系应用

    一 hashtable原理 哈希表又名散列表 其主要目的是用于解决数据的快速定位问题 考虑如下一个场景 一列键值对数据 存储在一个table中 如何通过数据的关键字快速查找相应值呢 不要告诉我一个个拿出来比较key啊 呵呵 大家都知道 在所
  • 设计模式GitHub找的好东西

    https github com DovAmir awesome design patterns https github com JakubVojvoda design patterns cpp https github com Wale
  • Appium自动化框架从0到1之 业务模块封装(登录页面业务操作)

    我们这次来封装登录页面业务操作 在上代码之前 我们先了解一下登录场景 用户名 密码 小鱼1号 fish1 小鱼2号 fish2 小鱼3号 fish3 然后 我们在登录的时候 会进行一下几个操作 我们先输入账号 密码 点击 登录按钮 登录后