
appium
Miss糖豆
这个作者很懒,什么都没留下…
展开
-
Appium学习总结(思维导图)
完整的测试框架: 并发测试:原创 2019-01-11 10:05:52 · 920 阅读 · 0 评论 -
框架综合实践(6)-用例执行和测试报告生成
首先,下载BSTestRunner.py用来生成测试报告样式下载地址:https://github.com/easonhan007/HTMLTestRunner下载成功后进行解压,BSTestRunner.py复制到python安装目录的lib文件夹下执行测试用例封装测试报告概要:定义测试用例和报告输出的路径 加载测试用例 定义测试报告生成的格式 运行测试用例并生...原创 2018-11-13 09:26:38 · 515 阅读 · 0 评论 -
框架综合实践(5)-loginView测试用例封装
测试用例封装在业务文件夹businessView文件夹下已经封装好了登录模块的测试脚本,现在要将登录模块进一步封装成测试用例。脚本概要:Myunit.py:定义了测试用例执行的初始化和结束,类名StarEnd LoginView.py:定义登录的整个业务操作模块 test_login.py:定义登录模块测试用例(包多种测试场景),调用LoginView业务操作逻辑,继承Myunit...原创 2018-11-13 09:26:00 · 334 阅读 · 0 评论 -
框架综合实践(4)-data数据读取方法封装
目的:在实际的测试项目中,例如测试登陆的场景,可能需要多次输入账号和密码进行登陆,此时需要将这些测试数据封装在一个文件中(文件类型可以是csv、txt、excel等)。那么我们就可以封装一些方法来读取文件中的数据来实现数据驱动测试。使用到的方法:enumerate()enumerate()是python函数中的方法,用于将一个可遍历的数据对象(如列表、元组、字符串)组合为一个索引序列,...原创 2018-11-07 09:41:53 · 554 阅读 · 0 评论 -
框架综合实践(3)-业务逻辑businessView的封装
业务逻辑的封装目的:将整个应用分模块,例如:引导页模块、登录模块、注册模块、签到模块等等,各个模块根据业务划分独立封装,便于后续维护和调用。脚本目录:分别将登陆模块和退出登陆模块独立封装文件夹目录:其中登录模块的测试脚本:(包含了登录的整个操作流程login_action()和校验是否登录成功check_login_alter) ...原创 2018-11-07 09:40:29 · 393 阅读 · 0 评论 -
框架综合实践(2)-公共模块Common的封装
公共类的思维导图如下:common_fun.py用于封装公共模块,例如滑动引导页的模块、检测应用是否进入首页等1.进入应用首页通过判断首页的某个元素存在,来校验是否成功进入应用首页2.定义获取屏幕大小函数3.定义向左滑动的函数4.定义获取系统时间的函数5.定义屏幕截图函数说明:1.获取当前脚本所在的文件夹:t_path=os.path.d...原创 2018-11-07 09:39:40 · 753 阅读 · 0 评论 -
框架综合实践(1)-driver的封装(capability)
读取yaml配置文件:有两种方式,一个是file open,一个是with open方式1file = open('../config/WiFibanlv_caps.yaml', 'r')data = yaml.load(file)file.close() #必须使用close,否则文件会出现占用情况方式2:with open('../config/WiFibanl...原创 2018-10-25 08:46:07 · 372 阅读 · 0 评论 -
Appium自动化测试框架
测试框架的功能:业务功能的封装 测试用例的封装 测试包的管理 截图处理 断言处理 日志获取 测试报告生成 数据驱动 数据配置:yaml配置、日志配置等 实现自动化的整体步骤:框架设计图:定义好每个文件夹应该实现功能或存放的文件代码实现封装各个模块的代码, 例如封装desired_caps.py,loginViewpy等...原创 2018-10-25 08:45:44 · 357 阅读 · 0 评论 -
Appium--pageobject实践(4)-unittest封装
Unittest的核心要素简介1.TestCase:一个testcase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的准备(setup),执行测试代码(run),以及测试后环境的海员(teardown)。单元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。2.TestS...原创 2018-10-19 11:34:13 · 837 阅读 · 0 评论 -
appium—定位Toast元素
定位Toast元素Appium1.6.3开始支持识别toast,且是基于uiautomator2,因此需要如下设置环境准备步骤一:安装node js进入官网下载:https://nodejs.org/en/ 下载node js,并安装好验证是否安装成功:npm -v步骤二:安装npm包进行npm包的安装,此时可以将npm换成淘宝的镜像,可以提高程序运行速度,分享...原创 2018-11-15 09:44:24 · 2368 阅读 · 1 评论 -
框架综合实践(8)-Jenkins 创建项目
前提:在“框架综合实践(7)--批量处理命令(命令执行脚本)”封装好自动化脚本的执行命令文件(.bat文件) 目的:自动化脚本写完以后,想要定时自动执行,或者开发打新包后就自动执行自动化测试脚本,此时需要借助jenkins实现。持续集成(continuous integration)每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。Je...原创 2018-11-24 13:53:47 · 351 阅读 · 0 评论 -
框架综合实践(9)--邮件发送1
Python邮件发送邮件的三种传送协议SMTP(simple mail transfer protocol):简单邮件传输协议,SMTP认证,简单说就是要求必须在提供了账号和密码之后才可以登录SMTP服务器 POP3:post office protocol邮局协议 IMAP:internet mail access protocol交互式邮件存取协议smtplib和email模块...原创 2018-11-24 13:55:13 · 841 阅读 · 0 评论 -
Appium并发测试(5)-服务端口自动检测和释放
检测端口有三种方法:手动cmd命令结束任务:netstat –ano |findstr 端口号2.手动使用任务管理器查看进程3.使用python的socket模块自动检测端口占用【下面详细解释】名词解释:Socket:两个程序之间相互通信的链接端口叫做socket,所以相互通信需要一对socket。Socket的本质是一个编程接口(API),对TCP/IP的封装,TC...原创 2018-12-11 09:55:33 · 808 阅读 · 0 评论 -
Appium并发测试(6)-同时在2个设备上启动APP
脚本设备思路:启动单个服务 启动单个设备并启动应用 利用多进程并发启动多个服务(具体设计思路如下)利用多进程并发启动多个设备并启动应用(具体设计思路如并发启动多个appium服务) 完整脚本:from time import sleepimport multiprocessingfrom multi_appium.multi_server_sync imp...原创 2018-12-19 16:45:33 · 2396 阅读 · 1 评论 -
Appium并发测试4-python依次和并发启动多个appium服务
启动appium服务的方式有三种通过appium desktop直接启动 通过cmd命令启动:appium –p 端口 通过python脚本启动前面第1和第2种只能依次启动appium server,第3种可以并发同时启动appium服务Python多进程介绍Python启动appium主要是应用subprocess模块实现的;python并发启动appium则主要是应用多进行m...原创 2018-12-05 10:11:58 · 2444 阅读 · 0 评论 -
Android手机每次运行时都要安装unlock、setting解决方案
Android手机每次运行时都要安装unlock、setting解决方案找到appium的安装目录修改appium-android-driver\lib下的android-helpers.js文件复制第1个步骤找到的appium安装目录:C:\Users\金美钗\AppData\Roaming\npm\进入appium-android-driver\lib,找到android-he...原创 2018-11-26 15:56:57 · 1328 阅读 · 0 评论 -
Appium并发测试1--启动多个appium服务
客户端和服务器进行通信,是要指定端口号(默认是4723),所以要启动多个服务,则需要多个端口号Appium常用命令参数:查看更多命令参数,则输入appium -h 参数 默认值 含义 -U,--udid Null 连接物理设备的唯一设备标识符 -a,--ad...原创 2018-11-26 15:56:35 · 1075 阅读 · 0 评论 -
框架综合实践(7)--批量处理命令(命令执行脚本)
目的自动化脚本开发阶段,我们会使用工具pycharm IDE来编辑运行脚本,但是脚本开发完成后,每次运行脚本都要打开工具就会变得很麻烦,而且pycharm IDE比较消耗资源,影响执行效率,这种情况下,我们可以使用cmd命令或者将cmd命令封装为bat批处理脚本来执行。设备连接命令内容:存为.bat文件@echo offadb connect 127.0.0.1:62001...原创 2018-11-26 11:02:47 · 410 阅读 · 0 评论 -
Appium- Pageobject设计模式(1-3)——简介和实践capabalility封装、common公共类封装、logging模块封装
Pageobject设计模式简介是selenium自动化测试项目开发事件的最佳设计模式之一,通过对界面元素的封装减少容易代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码,提高测试用例的可维护性。优化思路:将公共的内容抽离出来,例如检测元素是否存在 将元素定位方法和元素属性值与业务代码分离 登录功能或初始化功能封装为一个独立的模块 使用unittest进行用...原创 2018-10-19 11:18:05 · 777 阅读 · 0 评论 -
Appium-日志配置文件log.conf的读取和使用(3)
概述: 创建日志配置文件log.conf,配置内容如下:格式:先定义,后描述;例如先定义两个记录器,分别是keys=root,main;然后描述记录器的具体内容,例如logger_root记录器的内容日志级别level=DEBUG,日志的输出方式hanlders=consoleHandler,fileHandler调用日志模块: ...原创 2018-10-19 10:21:37 · 2096 阅读 · 0 评论 -
Appium常见错误
注意:当脚本运行错误时,直接看错误日志的最后一句话即可Appium服务未启动错误设备未连接:输入框内需要输入中文文本报错的解决办法:若脚本内需要输入中文文本,则应该在脚本初始化模块增加以下内容:desired_caps['unicodekeyboard']='True'desired_caps['resetkeyboard']='True'备注:启用appium键盘保护...原创 2018-07-26 14:23:17 · 625 阅读 · 0 评论 -
Appium用例分模块
背景:部分模块代码会出现重复使用的情况,为了解决代码重复编写,故将此模块代码直接生成一个模块(module),便于其他模块调用调用子模块的脚本语法:From 包名.文件名 import方法1,方法2,方法3 示例:将初始化脚本单独形成一个模块步骤一:Capability.py文件的脚本#!urs/bin/python#!_*_ coding:UTF-8 _*_...原创 2018-07-26 14:19:07 · 551 阅读 · 0 评论 -
Appium元素定位(name、classname、相对路径、绝对路径\、list)
元素通过name元素定位Appium的name元素定位对应的是Android上的text字段,语法:driver.find_element_by_name(‘安检测速’).click()缺点:部分文本,虽然会显示出来,但是空间上该text字段获取失败元素通过classname定位Appium的classname元素定位对应的是Android上的class字段,语法:dr...原创 2018-07-26 14:16:21 · 3830 阅读 · 0 评论 -
Appium自动化测试环境安装概览
安装JDK环境:https://www.cnblogs.com/ottox/p/3313540.html 安装jre环境:https://blog.youkuaiyun.com/tiantang_1986/article/details/53894947 安装Android SDK:https://blog.youkuaiyun.com/zeternityyt/article/details/79655150 安装...原创 2018-07-19 15:09:15 · 195 阅读 · 0 评论 -
Appium_python环境安装
安装python环境下载python安装包python-2.7.15.amd64.exe,直接双击运行安装安装时注意勾选允许pip安装成功后配置环境变量,如下图校验环境是否安装成功,打开cmd界面,输入python,成功如下图进入python的安装目录,查看在scripts目录下已存在pip的相关工具,如下图安装Appium-Python-Client确保p...原创 2018-07-19 15:05:28 · 290 阅读 · 0 评论 -
Appium元素检测异常捕捉
由于重复使用脚本导致apk没有重置导致脚本运行错误Norest的默认值是false,不会重置应用;导致部分需要引导页或升级引导的脚本再次运行时出现报错;解决方法如下:在脚本内增加:desired_caps[‘noReset’]=’True’ NoSuchElementException捕获异常注意:不能直接使用if函数,会出现未检测到元素的错误NoSuchElement...原创 2018-07-24 16:31:20 · 1640 阅读 · 0 评论 -
Appium元素定位工具inspector
在https://mp.youkuaiyun.com/postedit/81099201操作后;Appium元素定位 启动应用得参数配置成功后如下图:Appium开启会话后,会打开被测应用程序的图形界面、被测应用程序的app source、元素的详细信息三个面板,如下图 顶部导航栏菜单,分为两大模块:1.元素操作:Select Elements(根据元素定位)、Swipe ...原创 2018-07-18 17:55:18 · 2605 阅读 · 0 评论 -
Appium Desktop介绍
Appium Desktop介绍:Appium Desktop是appium更为优化的图形界面和appium相关的工具的结合:appium-server得图形界面。可以设置选项,启动/停止服务器,查看日志等功能;且无须提前安装node/NPM,因为node运行时直接与appium desktop绑定。 可以使用inspector来查看应用程序得元素,并进行基本得交互。Appium De...原创 2018-07-18 15:36:52 · 719 阅读 · 0 评论 -
appium之Uiautomator定位
Uiautomator元素定位Uiautomator元素定位是Android系统原生支持的定位方式,虽然与xpath相似,但是比它更好用,且支持元素的全部属性定位。定位原理是通过Android自带的Android Uiautomator的类库去查找元素。Appium元素定位方法其实也是基于Uiautomator来进行封装的。常用的定位方法:id:对应Android属性的resource...原创 2018-07-27 15:18:32 · 667 阅读 · 1 评论 -
appium元素等待(1)
Appium元素等待(1)在自动化过程中,受网络环境、设备性能等等原因影响,元素加载成功展示的时间可能不一致,从而导致元素定位超时未成功定位到而报错,但是实际上元素是正常的,只是加载时间不一致而已。元素等待有三种:强制等待、隐式等待、显示等待强制等待:使用方法sleep语法:步骤1:导入方法步骤2:输入等待时长,默认以秒为单位隐式等待:针对所有元素来设置等待...原创 2018-07-27 16:19:09 · 941 阅读 · 0 评论 -
Appium滑动引导页-swipe函数
Appium滑动引导页-swipe函数基础函数获取屏幕分辨率:driver.get_window_size()[‘height’] #获取屏幕的高度driver.get_window_size()[‘width’] #获取屏幕的宽度实现滑动屏幕的函数swipe(int start x, int start y, int end x, int end y,duratio...原创 2018-08-01 09:40:18 · 1265 阅读 · 0 评论 -
Appium-python日志logging模块的简介和应用(2)
Python的logging模块定义的函数和类为应用程序和库的开发实现提供了一个灵活的事件日志系统。 Logging模块提供了两种记录日志的方式:第一种是使用logging提供的模块级别的函数 第二种是使用logging日志系统的四大组件此文主要使用第一种方式。一、Logging提供的模块级别的函数 函数 说明 logging...原创 2018-08-28 20:03:02 · 972 阅读 · 0 评论 -
Appium-python日志模块logging(1)
背景:在调试脚本时,可直接使用pycharm IDE展示脚本执行的日志,如下图:但是,在脚本完成后,每日定时运行自动化脚本时,不会打开pycharm,故会存在看不到日志的情况,此时需要使用python日志系统。Python的日志模块是logging模块。Python的日志级别: 日志等级(level) 描述 DEBUG ...原创 2018-08-28 19:04:54 · 714 阅读 · 0 评论 -
Appium-yaml数据配置综合实践(3)
将自动化脚本内的capability模块用yaml文件配置,方便直接调用数据或修改配置的数据注意:yaml文件配置时,对应的冒号后需要加空格步骤:1.新建desired_caps.yaml文件2.yaml文件内容platformName: AndroidplatformVersion: 4.4.2deviceName: 127.0.0.1:62001app: C:\\Us...原创 2018-08-28 18:51:45 · 418 阅读 · 0 评论 -
Appium数据配置-Yaml数据读取和转换(2)
背景Appium里面的capability文件在遇到不同设备或测试不同软件时需要手动修改,此时直接在代码内修改参数,显然是可不取的,故使用Yaml来配置相关参数,自动化脚本直接调用对应的参数即可。此外Yaml语言是一种通用的数据串行化格式。Yaml语法规则如下:大小写敏感使用缩进表示层级关闭缩进时不允许使用tab键,只允许使用空格缩进的空格数目不重要,只要相同层级的元素左侧...原创 2018-08-24 08:47:03 · 922 阅读 · 0 评论 -
Appium数据配置--yaml安装(1)
升级pip输入指令:python -m pip install --upgrade pip 确保wheel已安装:安装yaml的安装包(whl格式):注意yaml的版本与python版本一一对应原创 2018-08-24 08:46:30 · 347 阅读 · 0 评论 -
Appium屏幕截图
屏幕截图用到的方法:方法1:save_screenshot()该方法直接保存当前屏幕截图到当前脚本所在的文件位置示例:脚本:#!_*_ coding:UTF-8 _*_from find_element.capability import driverdriver.find_element_by_xpath('//*[@text="安检测速"]').click()dri...原创 2018-08-02 08:43:36 · 5530 阅读 · 1 评论 -
Appium多点触控-MultiAction对页面进行放大或缩小
在网页中我们经常使用缩放操作来便利的查看具体的信息,在appium中使用MultiAction多点触控的类来实现MultiAction是多点触控的类,可以模拟用户多点操作。主要包含加载add()和执行perform()两个方法. MultiAction一般和TouchAction结合使用,故需要导入以下模块:from appium.webdriver.conmmon. touch_acti...原创 2018-08-14 08:44:36 · 2437 阅读 · 0 评论 -
Appium页面滑动连续操作-TouchAction
TouchAction包含一系列操作,例如短按、长按、点击、移动、暂停,由不同的操作可以组成一套动作,使用TouchAction需要先导入对应的模块:from appium.webdriver.common.touch_action import TouchAction 对应操作的方法:短按:press() 按压一个元素或坐标TouchAction(driver). pres...原创 2018-08-10 09:56:33 · 3149 阅读 · 2 评论 -
Appium元素定位(通过id定位)
Appium元素定位的方式有以下几种:id name class 相对定位 Xpath定位 H5页面元素定位 Uiautomator定位常用元素定位语法(python):find_element_by_id(‘XXXX’)find_element_by_class_name(‘XXXX’)find_element_by_xpath(“”)元素操作:点击find...原创 2018-07-23 17:26:12 · 2893 阅读 · 0 评论