首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
python UI自动化实战记录九:添加日志
】的更多相关文章
python UI自动化实战记录九:添加日志
想知道测试脚本运行到了哪一步,在脚本内关键节点处打日志是一个很好的方法.目前只写最简单的方式,logging相关还需要继续深入. 1 引包,并配置info级别以上的都显示 import logging;logging.basicConfig(level=logging.INFO) 2 在脚本需要的地方写日志: logging.info("当前策略:%s_%s"%(self.selectedStrategyName,self.strategycode)) logging.info(&q…
python UI自动化实战记录八:添加配置
添加配置文件写入测试地址等,当环境切换时只需修改配置文件即可. 1 在项目目录下添加文件 config.ini 写入: [Domain] domain = http://test.domain.cn 2 项目目录下添加python文件 read_config.py 写入: #coding:utf-8 """ 读取同一目录下的配置文件 """ import configparser import os class EnvConfig: dir =…
python UI自动化实战记录三:pageobject-基类
脚本思路: 使用pageobject模式,写一个basepage基类,所有页面的通用方法封装到基类中.比如打开页面,关闭页面,等待时间,鼠标移到元素上,获取单个元素,获取一组元素,获取元素的子元素,截图等等. 项目中的测试页面page1和page2都继承自basepage基类.可使用基类定义的方法.基类里会将webdriver和page合二为一,既将webdriver的操作改写成page的方法. 新建一个包pageclass > 分别新建basepage.page1.page2三个python文…
python UI自动化实战记录二:请求接口数据并提取数据
该部分记录如何获取预期结果-接口响应数据,分成两步: 1 获取数据源接口数据 2 提取后续页面对比中要用到的数据 并且为了便于后续调用,将接口相关的都封装到ProjectApi类中. 新建python包:apiclass > 新建python file:api_fund.所有接口相关的操作均放到该文件中.隐去项目相关信息后的代码如下: 1 获取数据源接口数据 # coding:utf-8 import requests from common.round_rewrite import round…
python UI自动化实战记录十一: 总结
首先说说为什么想起来用自动化脚本来实现该项目的自动化. 工作还是以手工测试为主,业务驱动型的项目大概就是这样,业务不停地变,不断的迭代. 自动化测试实施的先决条件: 一 得有时间. 如果有时间大部分的项目都可以实现自动化,这是毋庸置疑 的.不过一般公司的手工测试岗位测试任务之繁重做过的同学应该有体会.我自己负责五个产品线的迭代版本,不得一刻空闲,几乎每天都埋在业务测试中. 二 得有必要. 成本与效率之间很多时候在我所经历的项目中会倾向于手工测试,可以说是严重倾向于手工测试. 大部分迭代版本手工测…
python UI自动化实战记录五:测试页面2 pageobject
该部分记录测试页面2-StrategyPage,所有页面2上的元素定位.操作.获取属性等方法都写在该类中. 1 页面2继承自BasePage: 2 页面2第一部分写的是所有的定位器 3 页面2第二部分类的方法,包括提取页面元素,页面元素的操作.获取属性.验证元素属性正确性等 4 当用例中需要用到该页面的某元素或操作时,补充方法到该类中,再在用例中调用 5 页面数据最后要与接口对比,需要将接口类和页面类返回的值数据类型等进行统一,方便用例的编写. #coding:utf-8 ""&quo…
python UI自动化实战记录一:测试需求与测试思路
测试需求: 项目包含两个数据展示页面,数据均来自于四个数据源接口. 测试操作步骤: 选择5个大类型中的一个,每个大类型下有3个子类型,选择任一子类型,页面数据更新.需验证页面上的数据与数据源接口数据一致. 自动化必要性: 1 更新频率:接口数据每天更新 2 数据量:单个子类型页面的数据量较大 ,且需全量覆盖15个子类型的数据验证 测试思路:分别获取页面和接口数据,对比是否一致 dinghanhua 2019-01 一 获取接口数据 [预期结果] --requests --发送请求,获取响应 --…
python UI自动化实战记录七:页面2用例编写
使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 4 test打头的函数都是用例.因页面和接口的相关方法都已封装好,所以用例会比较简洁. 5 当一个用例需根据参数不同执行多次时,可使用ddt数据驱动,或unittest自带的subTest. # coding:utf-8 """ 页面2的测试用例 ""&qu…
python UI自动化实战记录六:页面1用例编写
使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 4 test打头的函数都是用例,预期结果和实际结果对比使用unittest自带的断言.因页面和接口的相关方法都已封装好,所以用例会比较简洁. 5 当一个用例需根据参数不同执行多次时,可使用ddt数据驱动,或unittest自带的subTest. 6 注意test05_click_btn(). 点击…
python UI自动化实战记录四:测试页面1-pageobject
该部分记录测试页面1-IndexPage,所有首页上的元素定位.操作.获取属性等方法都写在该类中. 1 首页类继承自BasePage 2 首页类第一部分写的是所有的定位器 3 首页类第二部分类的方法,包括提取页面元素,页面元素的操作.获取属性.验证元素属性正确性等 4 当用例中需要用到该页面的某元素或操作时,补充方法到该类中,再在用例中调用 5 函数名:open打头的表示 打开页面,get_表示获取页面元素或属性,check_表示验证页面数据是否一致,choose_表示元素选择,click_点击…
python UI自动化实战记录十:执行测试及测试报告
使用简单的unittest.TextTestRunner. 思路: 1 在report目录下创建当日测试报告目录 20190113 2 创建测试报告文件 f = 时间戳.txt 3 加载测试集,运行测试,测试结果unittest.TextTestRunner(stream=f)保存到文件中 项目目录下新建run_test.py文件,写入代码: # coding:utf-8 import unittest from testcase import testcase_index,testcase_s…
(appium+python)UI自动化_09_unittest批量运行测试用例&生成测试报告
前言 上篇文章[(appium+python)UI自动化_08_unittest编写测试用例]讲到如何使用unittets编写测试用例,并执行测试文件.接下来讲解下unittest如何批量执行测试文件并生成测试报告. 简单实例 实例讲解 一. 项目路径获取 project_name:项目名称,需更换为自己项目的名称 project_path:项目路径,获取思路 os.path.abspath(__file__):获取当前文件路径 split(project_name)[0]:通过项目名切割出项目…
Python—UI自动化完整实战
实战项目 均来源于互联网 测试报告2017年11月29日优化后的测试报告:https://github.com/defnngj/HTMLTestRunner 1.项目概述: 本实战已126邮箱为例子进行了实战,对登录.写邮件.发送邮件.删除邮件.退出登录进行了自动化测试: 测试完成后自动发送测试报告到指定邮箱 目录结构: auto_working目录: report ---> 目录用于存放测试报告 test_case …
Python UI自动化
Python3--Uiautomator2--Pytest--Alure使用 官方源码GitHub地址:https://github.com/openatx/uiautomator2 介绍 uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库.其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点: 1.测试脚本只能使用Java语言. 2.测试…
(appium+python)UI自动化_07_app UI自动化实例【叮咚搜索加车为例】
前言 初学UI自动化的小伙伴,在配置好appium+python自动化环境后,往往不知道如何下手实现自动化.小编在初期学习的时候也有这种疑惑,在此以叮咚买菜app-搜索加车为实例,展示下appium是如何实现自动化的. 前提:已安装配置好appium+python自动化环境 一.连接手机启动app 1,连接手机 -手机USB连接电脑 -手机打开开发者模式.USB调试功能 2,基础信息配置 基础连接信息如下(以叮咚app为例): 'platformName': 操作平台'deviceName':…
(appium+python)UI自动化_01_自动化环境搭建【MAC版】
Appium简介 Appium是一个开源的.跨平台的测试框架,主要用来进行app UI自动化,适用于原生应用.混合应用和移动网页应用(H5页面).目前支持Python.JavaScript.Objective C.Java.Ruby.PHP.C#等多种语言. python+appium环境搭建 1,配置python环境 如何在Mac上配置python环境在以前的文章中有记录过,这里就不展开说明啦,有需要的可参考小编的文章:Mac版-python环境配置(一):Python下载安装.Mac版-py…
python UI自动化之切换iframe
python+selenium写UI自动化的时候,经常会遇到需要切换iframe的情况,这里介绍几种切换iframe的方式 1.使用id定位 driver.switch_to.frame("id") 2.使用index定位 driver.switch_to.frame(index) 3.使用name定位 driver.switch_to.frame("name") 如果iframe既没有id也没有name属性,通过index也不好判断需要切换的iframe,那么需要…
开发基于vue前端框架下的系统的UI自动化,记录总结踩的坑
在使用了pytest完成了一个系统的UI自动化后,因为系统的前端框架,是 基于VUE写的,这就让我编写脚本的时候踩了些坑. 无法用JS 修改标签属性,从而进行的操作 比如上传图片,我们的上传是这样子的 基于这个情况,我不得不去使用autoit来完成上传的动作,但是,autoit是用来操作windows系统的GUI的, 那么我的脚本,无法在Linux上运行,也无法使用浏览器的headless模式(无头模式). 2.某些详情页,里在控制台里通过JS可以获取到我想要的值,但是代码执行起来就是拿不到…
(appium+python)UI自动化_03_元素定位工具
前言 在UI自动化过程中,需要对手机app上的元素进行定位,然后进一步编写自动化脚本操作app.定位元素首先需要定位工具来辅助查看页面元素.小编常用的定位工具有2种,分别是uiautomatorviewer.appium inspector. uiautomatorviewer 是Android sdk 自带的定位工具,元素层级展示清晰,但是定位不到内嵌H5页元素.appium inspector是appium上自带的定位功能,元素层级展示不够清晰,查看元素不够方便,但是可以定位到内嵌H5页元素…
python ui自动化之元素定位和常用操作
做ui自动化的最基础的就是页面元素定位了,如果连页面元素都定位不到,自动化从何谈起呢?接下来我们就看看页面元素定位的方法吧!(这里就用百度页面来进行演示) 一.最通用的几种定位方式: 1.通过id定位 driver.find_element_by_id('su') 2.通过name定位 driver.find_element_by_name('mp') 3.通过class属性 driver.find_element_by_class_name('s_ipt') 4.通过文本链接 driver.f…
python接口自动化(十九)--Json 数据处理---实战(详解)
简介 上一篇说了关于json数据处理,是为了断言方便,这篇就带各位小伙伴实战一下.首先捋一下思路,然后根据思路一步一步的去实现和实战,不要一开始就盲目的动手和无头苍蝇一样到处乱撞,撞得头破血流后而放弃了.不仅什么没学习 到,自己的自信心都受到打击了,自己都怀疑自己.其实你是最棒的,天生我材必有用,好了废话不说,进入实战——以查看快递物流接口为例. 大致流程步骤:web页面操作—>抓包看参数和url—>代码模拟接口请求—>取到接口返回结果—>断言 web页面操作 1.浏览器输入快递物…
Python核心技术与实战——十九|一起看看Python全局解释器锁GIL
我们在前面的几节课里讲了Python的并发编程的特性,也了解了多线程编程.事实上,Python的多线程有一个非常重要的话题——GIL(Global Interpreter Lock).我们今天就来讲一讲这个GIL. 一个不解之谜 我们先来看一看这个例子: def CountDown(n): while n>0: n -= 1 现在,我们假设有个很大的数字n=100000000,我们来试试单线程的情况下 执行这个函数,然后看看怎么执行的 import time def main(): start_…
(appium+python)UI自动化_02_appium启动手机app
前提:需先安装配置好appium+python自动化环境,已配置好环境的小伙伴可以参考以下步骤启动Android app,具体步骤如下: 一.USB连接手机 (1)手机USB连接电脑 (2)手机打开开发者模式.USB调试功能 二.基础信息配置 1,获取设备号 终端获取设备号,指令:adb devices 2,获取apk包名.activity (1)打开终端 (2)输入指令“aapt dump badging /Users/alisa/Downloads/weixin_1520.apk” 备注:记…
UI自动化实战进阶PO设计模式
前言 经过前面的实战我们已经编写了几个测试用例,下面我们要用PO设计模式来调整我们的代码,让页面元素和测试业务进行分离,这样看起来直观而且后期的维护也方便. python有一个第三方的PO设计的库,既然已经有了轮子,我们就可以直接造车了. 安装 首先我们来安装 pip install page_objects Code 页面封装 #pages.py from page_objects import PageElement, PageObject class Blog_Login_Page(Pag…
UI自动化实战进阶后续
前言 最近几天因为回老家的缘故,暂时没空学习和记录,好不容易抽空那就赶紧开始后面的实战. 前面我们已经基本完成了测试的框架,并且也有了PO设计模式,后面我们还缺少什么呢?做为自动化测试最主要的测试报告我们是不是还没有,所以今天主要是要集成测试报告. 安装 Unittest测试报告虽然没有自带的测试报告,但是已经有了第三方的测试报告HTMLTestRunner.不过它只支持python2,对于python3可能需要下载后修改文件部分地方进行适配.不过好在已经有人 也解决了这个问题,更新了HTMLT…
(appium+python)UI自动化_10_adb常用命令
前言 adb(Android Debug Bridge)工具是android-sdk里的一个工具,是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互.在app自动化测试过程中,有时要用到adb命令,但是每次都要百度感觉很是繁琐,故总结了下app自动化过程中几个常用的adb命令. adb常用命令 获取设备号 $ adb devices 下载apk 前提:需下载apk至电脑 $ adb install <电脑apk路径> 卸载apk $ adb uninstall <apk包名>…
(appium+python)UI自动化_08_unittest编写测试用例
前言 unittest是python自带的单元测试框架,类似于Junit(Java单元测试框架).支持自动化测试,可编写测试前置&后置条件,并且可批量运行测试用例并生成测试报告. 使用unittest需遵循以下几点: 1,使用时需导入unittest模块 2,编写测试类,并继承unittest.TestCase 3,测试用例名字以test开头(unittest会自动将test开头的方法放入测试用例集中) 4,断言需用unittest断言格式 用法简介 一.前置&后置 unittest前后置…
ElasticSearch实战系列九: ELK日志系统介绍和安装
前言 本文主要介绍的是ELK日志系统入门和使用教程. ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件.新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具. Elasticsearch是个开源分布式搜索引擎,提供搜集.分析.存储数据三大功能.它的特点有:分布式,零配置,自动发现,索引自动…
python+Appium自动化:记录遇到的坑
1.打开 uiautomatorviewer同步的的时候突然报错 Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException 解决:试了很多方法,重新开启uiautomatorviewer也没有解决,最后进入手机终端中,开发者模式,关闭再开启usb调试,就解决了~ 2.error: Chromedriver: Chromedriver exited unexpectedly with code nul…
python UI自动化之js操作
js处理iframe无需先切换到iframe上,再切回来操作.它可以在iframe上和主页面上来回自由操作. switch方法需要先切换到iframe上,操作完之后又的切换回来(很容易忘记切换回来),操作比较繁琐. 1.js处理富文本(富文本格式如禅道中的添加bug页面) 带iframe的元素,用js去操作contentWindow(相当于切换到iframe) body = "这里是通过js发的正文内容" # js处理iframe问题(js代码太长了,我分成两行了) js = 'doc…