Appium公共方法封装

最近在研究Appium+python写Android自动化测试脚本,之前用过selenium+python写web的自动化测试脚本,在此基础上修改。

还是使用POM,一个page页面对应一个test_case,base页面封装一些公共方法。封装的一个查找元素的公共方法:

def find_element(self, *loc):
        try:
            WebDriverWait(self.driver,10,0.5).until(EC.visibility_of_element_located(loc))
            return self.driver.find_element(*loc)
        except AssertionError as e:
            self.driver.close()

*loc表示这是一个元组对象。

之前使用selenium写page页面调用该方法查找元素,例如:

login_username_loc = (By.XPATH, ‘XXX‘)

el = self.find_element(*self.login_button_loc)

Appium的webdriver中新增了一些查找元素方法,我要通过accessibility_id查找元素,find_element_by_accessibility_id方法。但是selenium的selenium.webdriver.common.by中没有accessibility_id,如下所示,只有:ID、XPATH、LINK_TEXT、PARTIAL_LINK_TEXT、NAME、TAG_NAME、CLASS_NAME、CSS_SELECTOR。

class By(object):
    """
    Set of supported locator strategies.
    """

ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"

查找appium中的webdriver发现,新增的appium.webdriver.common.mobileby有个MobileBy对象,这是对by对象的一个扩展。

所以可以通过MobileBy来定位对象:

login_button_loc = (MobileBy.ACCESSIBILITY_ID, ‘登录‘)

el = self.find_element(*self.login_button_loc)

这样就避免了重新封装公共方法,还可以通过之前的公共方法来定位元素。

原文地址:https://www.cnblogs.com/d-d-w/p/9315670.html

时间: 2024-10-11 01:43:19

Appium公共方法封装的相关文章

appium+python自动化24-滑动方法封装(swipe)【转载】

swipe介绍 1.查看源码语法,起点和终点四个坐标参数,duration是滑动屏幕持续的时间,时间越短速度越快.默认为None可不填,一般设置500-1000毫秒比较合适. swipe(self, start_x, start_y, end_x, end_y, duration=None) Swipe from one point to another point, for an optional duration. 从一个点滑动到另外一个点,duration是持续时间 :Args: - st

常见的公共函数封装方法(密码强度、手机号验证、邮箱验证、输入金额验证)

//密码复杂度公共函数封装(邮箱,手机号) this.PasswordStrength = function(password) { var rule = Auto517.config.passwordRule.rule; var min = Auto517.config.passwordRule.min; var max = Auto517.config.passwordRule.max; if(rule == 0 && eval('/^[0-9]{' + min + ',' + max

oneThink公共方法

1. 常用公共方法 1 <?php 2 // +---------------------------------------------------------------------- 3 // | OneThink [ WE CAN DO IT JUST THINK IT ] 4 // +---------------------------------------------------------------------- 5 // | Copyright (c) 2013 http:

js公共方法

/*    MS 民生电商公共方法*/window.MS = window.MS || {};//判断平台类型和特性的属性;(function(){    var userAgent = navigator.userAgent || '';    MS.platform = MS.platform || {};    //判断是否为android平台    MS.platform.isAndroid = /android/i.test( userAgent );    //判断是否为Winpho

Python中高级变量类型(列表,元组,字典,字符串,公共方法...)

高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) 真 True 非 0 数 —— 非零即真 假 False 0 复数型 (complex) 主要用于科学计算,例如:平面场问题.波动问题.电感电容等问题 非数字型 字符串 列表 元组 字典 在 Python 中,所有 非数字型变量 都支持以下特点: 都是一个 序列 sequence,也可以理解为 容

高级变量类型(列表,元组,字典,字符串,公共方法,变量高级)for循环

Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) 真 True 非 0 数 -- 非零即真 假 False 0 复数型 (complex) 主要用于科学计算,例如:平面场问题.波动问题.电感电容等问题 非数字型 字符串 列表 元组 字典 在 Python 中,所有 非数字型变量 都支持以下特点: 都是一个 序列 sequence,也可以理解为 容器 取值 [] 遍历 for in 计算长度.最大/最小值.比较.删除 链接

公共方法

一些公共方法可以放入application中,项目工程在运行过程中,先运行application,再执行activity. 而且,application与activity的生命周期不同.application的生命周期从启动项目开始,到整个项目关闭之后结束,而activity的生命周期短. http://www.docin.com/p-478636767.html

iOS 常用公共方法

iOS常用公共方法 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat size = 0.0; NSError *error; NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error]; if (error) { #ifdef DEBUG NSLog(@&quo

通用ajax请求方法封装,兼容主流浏览器

ajax简介 没有AJAX会怎么样?普通的ASP.Net每次执行服务端方法的时候都要刷新当前页面.如果没有AJAX,在youku看视频的过程中如果点击了"顶.踩".评论.评论翻页,页面就会刷新,视频就会被打断.开发一个看效果:用<video src="diaosi.mp4" autoplay controls></video>播放视频(只有支持html5的浏览器能播放),然后放一个"赞"按钮的功能(赞的数量存到数据库),看